我必须 :
– 通过SSH将文件从源文件复制到目标文件夹,
– 确保复制所有文件,
– 复制后删除源文件.
– 如果我有冲突名称,我必须重命名文件.
看起来我可以使用选项: – remove-source-files(删除源文件)
但是rsync如何管理冲突,我可以有规则吗?
我的项目的用例:
我在服务器A上运行科学计算,结果被插入文件夹“process”,对于每个计算,我有一个这样的存储库:/ process / calc1.
现在我想将存储库“/ calc1”传输到服务器B(我得到/ process / calc1),并从服务器A中删除“calc1”.
…在另一个计算中,我在服务器A上得到“/ process / calc2”,想法也是在服务器B上的“/ process /”目录中移动“calc2”,然后我现在在服务器B上:
– / process / calc1
– / process / calc2
(和/ server / on服务器A为空).
rsync如何管理冲突(在服务器B上)如果在新计算之后我在服务器A中有另一个文件夹如“/ process / calc1”(如果服务器B上已经存在“/ process / calc1”)?
是否可以使用rsync添加规则,并在服务器B中将“/ process / calc1”重命名为“process / calc1R2”?等等(例如:calc1R3)?
谢谢.
解决方法
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/
我不确定这对你所追求的是否有点过分,但它应该符合你的要求.