我有几个 TB 和数千个文件,我需要通过网络从一台 Linux 主机移动到另一台。我想获得有关如何编写脚本的建议,请记住以下几点:
xargs 和 Rsync 会很好,除非它似乎不提供在成功复制后“删除”源文件的能力。
小智 7
Rsync 确实有一个删除源文件的选项。结合--checksum 标志,对于这种操作,它应该足够值得信赖。
但是,您可以使用git-annex进行迁移(它将在幕后使用 rsync 进行实际传输)。
在主机 A 上:
mkdir annex
git init
git annex init "host A"
Run Code Online (Sandbox Code Playgroud)
在主机 B 上:
git clone ssh://A/path/to/annex annex
git annex init "host B"
git annex sync
Run Code Online (Sandbox Code Playgroud)
再次在主机 A 上:
git remote add b ssh://B/path/to/annex
Run Code Online (Sandbox Code Playgroud)
将文件复制到附件文件夹后,将文件添加到主机 A 上的 git-annex:
git annex add .
git commit . -m "Added files"
find /path/to/files* -mtime +5 -exec git annex move {} --to b\;
git-annex sync
Run Code Online (Sandbox Code Playgroud)
有关用法的详细信息,请参阅git-annex 演练。