我有一个包含数万个文件和 520 GB 数据的文件夹,我每晚通过 rsync 同步到远程主机。这个过程通常需要大约 5 个小时。我还想在白天将那些新的和更改的文件复制到远程位置而不比较两棵树,这就是 rsync 所做的,因为有时目标上的人需要访问新文件,所以我开始玩弄scp 但我不确定如何解决我迄今为止遇到的两个问题。是的,我是 bash 的新手。:)
这是我想每小时运行的命令: find Folder/ -type f -mmin -60 -print0 -exec scp "/rootfolder1/subfolder1/{}" "user@host:/rootfolder2/subfolder2/{}" \;
我遇到的问题是:当传递给 scp 的字符串有空格时,它不起作用并触发错误“scp ambiguous target”。显然 scp 需要用反冲转义的空格,但我不知道如何指示 FIND 以这种方式打印路径,也不知道如何在其中插入 SED 命令来执行以下操作: sed 's/ //g' .
另一件事是,当要复制的文件位于目标 scp 中不存在的文件夹中时,也会产生错误。所以我不知道在尝试复制每个文件之前是否应该尝试使用“mkdir -p”(假设 mkdir -p 在远程主机上工作)或者是否有任何方法可以强制 scp 创建丢失的文件夹。
当然,如果您可以提出更好的解决方案,请务必!谢谢你。