使rsync将文件从源移动到目标?


15

rsync是我的项目的不错选择吗?

我必须:
-通过SSH将文件从源复制到目标文件夹,
-确保所有文件都已复制,
- 复制后删除源文件。
-如果我有冲突的名字,我必须重命名文件。

看来我可以使用以下选项:--remove-source-files(删除源文件)
但是rsync如何管理冲突,我可以有规则吗?

我的项目的用例:

我在服务器A上进行科学计算,结果被插入到“进程”文件夹中,对于每次计算,我都有一个像这样的存储库:/ process / calc1。
现在,我想将存储库“ / calc1”转移到服务器B(我获得/ process / calc1),并从服务器A删除“ calc1”
。...在另一次计算中,我在服务器A上获得了“ / process / calc2”,这个想法也是将“ calc2”移到服务器B的“ / process /”目录中,然后我现在在服务器B上:
-/ process / calc1-
/ process / calc2
(并且服务器A上的/ process /为空)。

如果在新的计算之后服务器A中还有另一个文件夹,例如“ / process / calc1”,那么rsync将如何管理服务器B上的冲突(如果服务器B中已经存在“ / process / calc1”)?

是否可以使用rsync添加规则,并在服务器B中将“ / process / calc1”重命名为“ process / calc1R2”?依此类推(例如:calc1R3)?

谢谢。

Answers:


11

如果您确实想使用rsync,听起来您需要--backup,--backup-dir和--suffix的某种组合。我认为您能得到的最接近的是这样的东西

rsync -abv --suffix R1 --remove-source-files src/ dst/

这将接近您想要的名称,但不会完全按照您想要的方式重命名文件。--suffix选项将文本追加到现有文件的末尾,但仅在出现第一次冲突时才这样做。如果再次运行它,它将覆盖您的第一个备份。您必须在每次运行命令时更改该后缀值,如果您使用带有时间戳的内容,则可以使用该后缀值,例如:

rsync -abv --suffix `date +%Y%m%d%k%M%S` --remove-source-files src/ dst/

我不确定这对您的追求是否构成过大杀伤力,但它应该满足您的要求。


计算后我可以拥有大文件,因此最好使用rsync(以防出现网络故障)。
user44782 2010年

1

顾名思义,rsync用于同步文件。当“同步”时,这意味着源和目标上的文件是相同的。那似乎不像你想做的。

似乎您只想移动一些文件。您不需要为此使用rsync。似乎您使用的是Linux或BSD。您可以在ssh上使用mv -n。-n选项不会覆盖现有文件。这不是100%自动的。但是,在您的情况下,我看不到该文件可能已经存在。文件将从源复制到目标,然后从源中删除。您是否要再次运行相同的计算?这就是为什么您最终会得到相同名称的文件吗?我建议将运行号或批号附加到文件夹名称中。您还是要弄清楚这一点。您可以控制文件夹的命名方式吗?还有更多细节吗?我建议将命令放在bash脚本或类似脚本中。


在某些情况下,我必须再次运行相同的计算(这就是为什么我最终使用相同名称的文件)。是的,追加一个运行是一个好主意:在命令mmv -a中也可以找到(我希望它可以在ssh模式下工作,有人已经在使用此命令行了吗?)。我可以控制文件夹的命名方式。
user44782 2010年

它很可能未安装在计算机上。如果是您的机器,则可以安装。基于Debian的:sudo apt-get install mmv您也可以查看sshfs或NFS并将文件直接输出到最终目的地。除非需要中间位置(检查,修改等)。如果两台机器之间的链接不可靠,那当然是个坏主意。保罗的建议很好。不过,在开始时附加运行编号可能会更有条理。
d -_- b 2010年

1
在ssh上如何使用“ mv -n”?您可以在sshfs上使用mv。
guettli 2012年

操作...是的,这使情况更清晰。
d -_- b

-1

总之,对于SSH,请使用以下命令:

通过远程外壳访问:

拉取:rsync [OPTION ...] [USER @] HOST:SRC ... [DEST]

推送:rsync [OPTION ...] SRC ... [USER @] HOST:DEST

所有这些都在rsync(1)中进行了解释。

至于为cronjob编写脚本的脚本,要在不要求密码的情况下自动通过ssh进行rsync,也可以查看ssh-agent(1)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.