关于脚本从一个linux主机移动到另一个文件的build议

我有几TB和成千上万的文件需要通过networking从一个Linux主机移动到另一个。 我想获得如何编写脚本的build议,请牢记以下几点:

  • 要移动的文件将适合dateconfiguration文件(即“年龄大于”x年)
  • 一个文件的失败不应该阻止其他的被移动(continue_on_error),并且应该在日志文件中注明
  • 源主机上的文件移动成功后应自动删除
  • 源主机上的目录结构包含许多不能移动的文件,因为它们不适合dateconfiguration文件。 这些文件不应该被触及
  • 脚本应该连续运行,无需用户干预,直到完成
  • 文件是顺序移动还是并行移动都不重要

xargs和Rsync应该没问题,除非它能够在源文件被成功复制后“删除”它。

Rsync确实有一个选项来删除源文件 。 结合 – 旗子旗子,它应该是可信赖的这种操作。

但是,您可以使用git-annex进行迁移(它将在实际传输中使用rsync)。

在主机A上:

mkdir annex git init git annex init "host A" 

在主机B上:

 git clone ssh://A/path/to/annex annex git annex init "host B" git annex sync 

再次在主机A上:

 git remote add b ssh://B/path/to/annex 

将文件复制到附件文件夹后,将文件添加到主机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 

有关使用的详细信息,请参阅git-annex演练 。