我在一个将文件夹内容复制到另一台机器的应用程序中有一个 rsync 命令。我有这个选择,--remove-source-files因为我只对在 rsync 完成后将文件放在目标机器上感兴趣。
但是,我想知道 rsync 在传输文件时崩溃或中断时的行为如何?
考虑我有两个文件要同步,a和b. 将 rsync copy a,然后从源中删除它,然后开始复制b,还是会等待两者a并b复制到目标机器,然后再删除它们?我已经看到您可以在删除带有某些标志的无关文件时配置此行为,但没有发现有关删除源文件的内容。
我正在阅读几篇指南,介绍如何将 btrfs 快照与 rsync 结合使用,以创建具有历史记录的高效备份解决方案。然而,这一切都取决于是rsync --inplace只修改实际更改的文件部分,还是按顺序覆盖整个文件。如果它写入整个文件,那么似乎 btrfs 将始终创建该文件的新副本,这会使该想法的效率大大降低。
我使用 rsync 使用 --progress 选项,所以文件传输完成,我得到以下输出
receiving incremental file list
Makefile
9,935 100% 9.47MB/s 0:00:00 (xfr#1, to-chk=0/1)
Run Code Online (Sandbox Code Playgroud)
我的问题是什么to-chk=0/1意思?
我在这里只传输 1 个文件,即 Makefile。传输编号 (xfr#1) 清楚地表示 1 个文件,但是 to-chk = 0/1 代表什么?
我有一个系统作为服务器运行,但硬盘驱动器出现故障。虽然所有重要数据都在 RAID 上并进行备份等等,但我没有系统本身的图像。没有特定的需要,因为我当然可以进行安装,但我仍然想在进入还原路径之前先尝试进行热复制。我知道这作为一个过程有一些缺点,但我认为将其作为首选尝试并没有太多缺点。
我的想法是
我还有的问题是:
什么是好的 rsync 命令? 我本来打算:
rsync -aAXx / /mnt/somedir/
--exclude={/dev/*,/proc/*,/sys/*,/tmp/*,/run/*,/mnt/*,/media/*,/lost+found}
Run Code Online (Sandbox Code Playgroud)
(我跳过了更多的目录,例如我安装的raid 等)
选项在哪里:
-a, --archive archive mode; equals -rlptgoD (no -H,-A,-X)
-A, --acls preserve ACLs (implies -p)
-X, --xattrs preserve extended attributes
-x, --one-file-system don't cross filesystem boundaries
Run Code Online (Sandbox Code Playgroud)
我特意跳过 -H、-v 和 --progress 以加快进程。
这对 Ubuntu 有用吗?我不确定 Ubuntu 是否使用任何硬链接,但我认为我不需要这个选项,是吗?
这次运行后,我可以重新启动(也许使用实时 USB 驱动器)并重新运行 rsync 如果旧磁盘仍然启动。这将修复任何不可读/更改的文件,因为我想系统正在运行。
如何修复启动?
然后我的计划是/在我的 …
因此,现在我们使用 Dropbox 在大约 10 个 Mac OS X 系统之间共享各种数据文件。
但是,我们已经有一个 S3 帐户,而且每个人都使用最低 10 美元/月的 Dropbox 计划似乎太贵了。我们希望避免任何类型的本地存储(在桌面上共享磁盘或其他东西),因为我们是一个地理上分散的团队)。
所以,我正在考虑一些可以让我们用我们自己的本土解决方案取代 Dropbox 的东西。我们都是相当技术人员和/或足够聪明来遵循一些步骤,所以如果它不像 Dropbox 那样“用户友好”,我们都对此感到满意。
有很多文档包含我想要的零碎内容,但有些工具似乎不符合要求:
我可以在互联网上找到的大多数脚本都使用重复性,这似乎失败了 #1。看起来 duplicity 不支持 SSL 到 S3——文档没有说明,但协议看起来像普通的旧 HTTP。
许多脚本使用 GPG 来加密文件。这似乎可行,但是我必须确保每个 OS X 客户端都能够使用相同的密钥来加密和解密文件(密钥管理由我来管理)。FTP 和其他基于客户端的应用程序似乎根本不支持这一点。
最后,大多数脚本使用单向复制,例如使用 Amazon S3 作为简单的备份存储。由于我们将使用 Amazon S3 作为“存储库”,因此他们未能通过这一方法。
哇。所以,我很想有一个工具可以做到这一点,但经过详尽的搜索,我认为不存在这样的工具。在我看来,神奇的工具是 TrueCrypt 和 rsync 的某种组合。
我很高兴知道哪些工具可以满足我的 3 个要求,之后我可以将其余的缝合在一起。有什么想法吗?
在 Ubuntu 中,我想通过 rsync 将一个大文件从我的硬盘复制到一个可移动驱动器。由于某种原因或其他原因,该操作无法在一次运行中完成。所以我想弄清楚如何使用 rsync 从上次离开的地方恢复文件复制。
我尝试使用选项--partial 或--inplace,但是与--progress 一起使用时,我发现rsync 与--partial 或--inplace 实际上从头开始,而不是从上次剩下的开始。手动提前停止 rsync 并检查接收文件的大小也证实了我的发现。
但是使用--append,rsync 从上次剩下的开始。
我很困惑,因为我在联机帮助页上看到 --partial、--inplace 或 --append 似乎与从上次剩下的内容恢复复制有关。有人可以解释一下区别吗?为什么 --partial 或 --inplace 不能用于恢复副本?为了恢复副本,rsync 必须使用选项 --append 是真的吗?
此外,如果部分文件是由 mv 或 cp 而不是由 rsync 留下的,那么 rsync --append 会正确吗?
感谢致敬!
如何在不提供任何密码的情况下在两台主机之间设置 rsync?
Rsync 非常有用,我不必复制目录中的所有文件。它只更新较新的文件。
我将它与 cygwin 一起使用,但我认为存在一些不一致之处,这不是这个问题的主要焦点。
那么有等价物吗?
我使用 rsync 命令将文件从我的一个 ubuntu 服务器备份到另一台 ubuntu 机器。备份服务器触发使用 rysnc 命令的脚本。这是我使用的命令
rsync -rltvh --partial --stats --exclude=.beagle/ --exclude=.* --delete-after root@live_server:/home/ /home/live_server_backup/home >> /tmp/logfile.log 2> &1
live_server 无需密码即可 ssh。所以它有效。现在问题是
--delete-after 选项
在所有文件同步之后。最后我可以看到删除过程已跳过。日志文件错误就像
遇到IO错误——跳过文件删除
当我尝试查找日志时,文件同步时出现一些错误
rsync:send_files 无法打开“/home/xyz/Desktop/PPT_session_1_context.pdf”:权限被拒绝 (13)
所以我的理解是因为 rsync 出于安全原因无法从目标读取所有文件,它正在跳过文件删除。
即使有一些权限错误,有没有办法让 --delete-after 工作?我不想使用强制删除,因为在某些情况下会很危险。
我跑出空位的/home/data需要,并转移/home/data/repo至/home/data2。
/home/data/repo包含 1M 个目录,每个目录包含 11 个目录和 10 个文件。总共 2TB。
/home/data在启用 dir_index 的 ext3 上。
/home/data2在 ext4 上。运行 CentOS 6.4。
我认为这些方法很慢,因为repo/它下面有 100 万个目录。
mv速度快但被打断如果这已经完成,我可以做到:
/home/data> mv repo ../data2
Run Code Online (Sandbox Code Playgroud)
但是在传输了1.5TB之后就中断了。它以大约 1GB/分钟的速度写入。
rsync在构建文件列表 8 小时后爬行/home/data> rsync --ignore-existing -rv repo ../data2
Run Code Online (Sandbox Code Playgroud)
构建“增量文件列表”需要几个小时,然后以 100MB/分钟的速度传输。
我取消它以尝试更快的方法。
mv抱怨在子目录上测试它:
/home/data/repo> mv -f foobar ../../data2/repo/
mv: inter-device move failed: '(foobar)' to '../../data2/repo/foobar'; unable …Run Code Online (Sandbox Code Playgroud)