将容器中的文件移动到已安装卷 docker 的文件夹

我正在尝试在 docker 上运行 golang 应用程序。但是当我尝试将容器中创建的文件移动到创建的卷所在的文件夹时,出现错误:rename /mygo/newt /mygo/store/newt: invalid cross-device link


我的高朗代码


package main


import (

    "bufio"

    "fmt"

    "os"

    "path/filepath"

    "strings"

)


func main() {


    for {


        fmt.Println("do you want to create a file,y for yes, n for no")

        var ans string

        fmt.Scanln(&ans)

        if ans == "y" {

            var userFile string

            fmt.Println("enter name of file")

            fmt.Scanln(&userFile)

            myfile, err := os.Create(userFile)

            if err != nil {

                fmt.Printf("error creating file::%v\n", err)

                return

            }

            fmt.Println("enter text to write in file")

            reader := bufio.NewReader(os.Stdin)

            input, err := reader.ReadString('\t')

            if err != nil {

                fmt.Println("an error occured while reading::", err)

                return

            }

            input = strings.TrimSuffix(input, "\t")

            num, err := myfile.WriteString(input)

            if err != nil {

                fmt.Println("error while writing to file", err)

            }

            fmt.Printf("%v characters entered \n", num)

            defer myfile.Close()

            fmt.Println("created a file", userFile)

            fmt.Println("===========")

            fmt.Println("moving file to default folder")

            pwd, err_pwd := os.Getwd()

            if err_pwd != nil {

                fmt.Printf("could not get current working directory::%v\n", err_pwd)

            }


HUH函数
浏览 135回答 1
1回答

料青山看我应如是

在 Linux 中有两种“重命名”文件的方法。将目录条目移动到新位置,但保持文件内容不变。这具有速度快的优点。它的缺点是在将文件从一个文件系统移动到另一个文件系统时不起作用。创建一个新文件,将数据复制到新文件,删除旧文件。但是,如果源和目标位于两个不同的文件系统上,它将起作用。方法#1 在这种情况下不起作用。你需要方法#2。更多资源:这个golang-dev 讨论解释了为什么会发生这种情况。This question谈论同样的问题,但在 C++ 的上下文中。Gorenameat()在内部使用系统调用。本手册页 解释了它是如何工作的。您遇到的特定错误是 EXDEV 错误:“oldpath 和 newpath 不在同一个挂载的文件系统上。(Linux 允许在多个点挂载文件系统,但 rename() 不能跨不同的挂载点工作,即使两者上都安装了相同的文件系统。)”
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go