我正在尝试从不可靠的远程服务器同步文件,这意味着连接往往会“随机”失败
rsync:连接意外关闭
rsync 是用 --partial 调用的,所以我希望能够在循环中调用 rsync 直到文件完全传输。似乎没有告诉 rsync 重试的标志。
编写脚本的最佳方法是什么?bash for 循环?
运行 ubuntu 12.04,我想比较 2 个目录,比如 folder1/ 和 folder2/,并复制与 folder3/ 不同的任何文件。还有嵌套文件,因此也应复制匹配的子目录
有没有一个命令可以帮助我?我可以获得正在运行的已更改文件的完整列表:
rsync -rcnC --out-format="%f" folder1/ folder2/
Run Code Online (Sandbox Code Playgroud)
但是 rsync 似乎没有能力将这些文件“导出”到不同的目标目录。我可以将列表通过管道传输到 cp 或其他一些程序,以便复制文件,同时创建目录吗?例如,我试过
rsync -rcnC --out-format="%f" folder1/ folder2/ | xargs cp -t folder3/
Run Code Online (Sandbox Code Playgroud)
但这也不会保留目录,它只会复制 folder3/ 中的所有文件
我在 bash 脚本中使用 rsync 来保持几个服务器和 NAS 之间的文件同步。我遇到的一个问题是尝试生成在 rsync 期间已更改的文件列表。
这个想法是,当我运行 rsync 时,我可以将已更改的文件输出到文本文件中 - 更希望内存中有一个数组 - 然后在脚本存在之前,我可以只对已更改的文件运行 chown 。
有没有人找到一种方法来执行这样的任务?
# specify the source directory
source_directory=/Users/jason/Desktop/source
# specify the destination directory
# DO NOT ADD THE SAME DIRECTORY NAME AS RSYNC WILL CREATE IT FOR YOU
destination_directory=/Users/jason/Desktop/destination
# run the rsync command
rsync -avz $source_directory $destination_directory
# grab the changed items and save to an array or temp file?
# loop through and chown each changed file
for changed_item …Run Code Online (Sandbox Code Playgroud) 比较目录结构的最佳方法是什么?
我有一个使用rsync的备份实用程序。我想说明源和备份之间的确切差异(在文件大小和上次更改日期方面)。
就像是:
Local file Remote file Compare
/home/udi/1.txt (date)(size) /home/udi/1.txt (date)(size) EQUAL
/home/udi/2.txt (date)(size) /home/udi/2.txt (date)(size) DIFFERENT
Run Code Online (Sandbox Code Playgroud)
当然,该工具可以是现成的,也可以是python脚本的想法。
非常感谢!
乌迪
如rsync的手册页所述,-a(归档)开关等效于-rlptgoD. 但是,我有一种情况,我不希望保留符号链接。有没有办法继续使用-a开关并防止复制符号链接?-rptgoD每次都可以写,但是有点长。
我正在使用以下命令跨服务器传输文件
scp -rc blowfish /source/directory/* username@domain.net:/destination/directory
Run Code Online (Sandbox Code Playgroud)
有没有办法像update命令一样只传输文件修改过的文件cp?
运行此命令时:
$ sudo rsync -r --delete --force --checksum --exclude=uploads /data/prep/* /data/app/
Run Code Online (Sandbox Code Playgroud)
我得到以下输出:
cannot delete non-empty directory: html/js/ckeditor/_source/plugins/uicolor/yui
cannot delete non-empty directory: html/js/ckeditor/_source/plugins/uicolor/yui
cannot delete non-empty directory: html/js/ckeditor/_source/plugins/uicolor
cannot delete non-empty directory: html/js/ckeditor/_source/plugins/uicolor
cannot delete non-empty directory: html/js/ckeditor/_source/plugins
cannot delete non-empty directory: html/js/ckeditor/_source/plugins
cannot delete non-empty directory: html/js/ckeditor/_source
cannot delete non-empty directory: html/js/ckeditor/_samples
cannot delete non-empty directory: html/js/ckeditor/plugins/uicolor/yui
cannot delete non-empty directory: html/js/ckeditor/plugins/uicolor/yui
cannot delete non-empty directory: html/js/ckeditor/plugins/uicolor
Run Code Online (Sandbox Code Playgroud)
通过阅读man rsync我的印象,该--force选项会告诉 rsync 删除这些非空目录,这是预期的结果。
参考:
--force force deletion of …Run Code Online (Sandbox Code Playgroud) 我想编写一个简单的备份脚本,将一些数据保存到 FAT 驱动器。我应该重新格式化驱动器并使用更好的文件系统还是可以将 rsync 与 FAT 一起使用?如果是这样,我可能会遇到什么问题?性能会差很多吗?
编辑:这是在 linux 上,甚至不知道 Windows 有 rsync。源是各种文件系统(一团糟),目标当前是用 FAT32 格式化的。
感谢您的回答,我可能会重新格式化,因为我不完全确定我们将拥有的文件大小。
当使用 rsync+ssh 访问远程机器时,有没有办法“优化”远程机器上的 rsync 进程(降低其优先级)?
编辑问题以澄清:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
backups 16651 86.2 0.1 3576 1636 ? Rs 11:06 0:06 rsync --ser...
Run Code Online (Sandbox Code Playgroud)
(rsync 行被剪断)
这是一个备份 cron 作业,通常在凌晨 4 点运行,但是当我碰巧醒着(并提交,或使用托管在同一台机器上的 Bugzilla)时,它会降低服务器性能,所以我想要一个快速的“黑客”来尝试修复它有点。
有时,我必须对服务器上的数据文件执行几次大型迁移更改,我正在寻找一种好方法来执行此操作。我正在考虑使用 rsync 从根数据文件夹开始复制我的目录结构,创建指向所有原始文件的硬链接(其中一些文件相当大),并且我可以在目标树中仅覆盖需要迁移的文件。最后,我可以通过两次mv操作安全地从旧文件切换到新文件。
但是,我似乎无法让 rsync 做到这一点。我试过
rsync -a --link-dest=$DATA $DATA $DATA/../upgrade_tmp
Run Code Online (Sandbox Code Playgroud)
但 rsync 不是创建文件的硬链接,而是完全复制它们。使用相同的源和链接目标目录是否有问题?