前提・実現したいこと
Go言語でファイルのバックアップのためのコピーをしたいので、
毎回コピーするファイルに、現在の日時をファイル名に付けてバックアップしている。
しかし日付でファイル名を区別しているにも関わらず、
同一フォルダに存在する同じ拡張子のファイルすべてに最新の内容が上書きされてしまう。
これはGo言語の何らかの仕様によるものですか、それともコードのエラーでしょうか。
是非ご教授ください。
該当のソースコード
Go言語
1package main 2 3import ( 4 5 "os" 6 "time" 7 8) 9 10func main() { 11 12 now := time.Now() 13 layout := "2006.01.02-15.04.05" 14 date := now.Format(layout) 15 16 src := "hoge/hoge/hoge" 17 dst := "fuga/fuga/fuga" 18 19 os.Link(src + "/" + "new.txt", dst + "/" + date + "new.txt") 20 21}
補足情報(FW/ツールのバージョンなど)
Windows 10
go1.17.6 windows/amd64
ハードリンクとコピーの違いはこちらをどうぞ。
https://linux-791.blog.ss-blog.jp/2012-11-14
Go でファイルをコピーするには io.Copy とかを使うと良いのでは。
https://qiita.com/cotrpepe/items/93e4a072c249a933e795

ありがとうございます、これで実現できました。
package main
import (
"os"
"io"
"time"
)
func main() {
now := time.Now()
layout := "-2006.01.02-15.04.05-"
date := now.Format(layout)
src, err := os.Open("hoge/hoge/hoge/new.txt")
if err != nil {
panic(err)
}
defer src.Close()
dst, err := os.Create("fuga/fuga/fuga/" + date + "new.txt")
if err != nil {
panic(err)
}
defer dst.Close()
_, err = io.Copy(dst, src)
if err != nil {
panic(err)
}
}

回答1件
あなたの回答
tips
プレビュー