Gil*_*il' 187
如果您只想更新原始目录中较新的文件,或者跳过目标中已存在的所有文件,请使用rsync, 并传递。-u--ignore-existing
rsync -au /local/directory/ host:/remote/directory/
rsync -a --ignore-existing /local/directory/ host:/remote/directory/
Run Code Online (Sandbox Code Playgroud)
(注意/源端:没有它rsync会创建/remote/directory/directory.)
小智 15
如果您可以将目标文件内容设为只读:
find . -type f -exec chmod a-w '{}' \;
Run Code Online (Sandbox Code Playgroud)
在运行之前scp(它会抱怨并跳过现有文件)。
然后将它们改回来(chmod +w以获得基于 umask 的值)。如果根据您的 umask,文件并非都具有写权限,则您必须以某种方式存储权限,以便您可以恢复它们。
(如果本地文件更新,Gilles 的回答会覆盖现有文件,我以这种方式丢失了有价值的数据。不明白为什么这个错误和有害的答案有这么多投票)。
小智 14
您只能按日期复制新文件。用find
scp `find /data/*.gz -type f -mtime -7` USER@SERVER:/backup/
Run Code Online (Sandbox Code Playgroud)
从联机帮助页(-atime上次访问时间,但原理是相同的):
-atime n上次访问文件n * 24 小时前。当找出多少个24小时周期前的上次访问文件,小数部分被忽略,因此如果要匹配数字
-atime +1,文件必须已至少访问两个天前。>
小智 8
我有一个类似的任务,在我来说,我不能用rsync,csync因为我的存储只有SFTP,或保险丝。rsync无法更改文件的日期和时间,其他一些实用程序(如csync)向我显示了其他错误:“无法创建临时文件检测到时钟倾斜”。
如果您有权访问存储服务器 - 只需在此处作为守护程序安装openssh-server或启动rsync。
就我而言 - 我不能这样做,解决方案是:lftp。lftp的同步用法如下:
lftp -c "open -u login,password sftp://sft.domain.tld/; \
mirror -c --verbose=9 -e -R -L /srs/folder /rem/folder"
Run Code Online (Sandbox Code Playgroud)
/src/folder- 是我电脑上的文件夹,/rem/folder- 是sftp://sft.domain.tld/rem/folder.
您可以通过以下链接找到手册页:http : //lftp.yar.ru/lftp-man.html
小智 7
要复制一大堆文件,将它们压缩会更快。通过使用 -k 还可以防止 tar 在目标系统上解压缩文件时覆盖文件。
tar -c <source-dir> | ssh <name>@<host> 'tar -kxzf - -C <target-dir>'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
279413 次 |
| 最近记录: |