为了避免 rsync 使我们ionice在启动 rsync 和设置--bwlimit参数时使用的系统和网络饿死。例如:
ionice -c2 -n7 rsync -aH --bwlimit=30000 /foo root@dest.com:/
Run Code Online (Sandbox Code Playgroud)
这确实有助于确保源服务器保持响应。但是,由于磁盘 io 为 100%(如atop实用程序所见),目标服务器变得非常慢。
是否也可以ionice在目标服务器上以某种方式使用?也许通过 rsync-e选项?如果可能,我不想运行 rsync 守护进程。
我正在使用脚本在sudo crontab. 该脚本执行 2 路 rsync(从 serverA 到 serverB 并反向)。重新启动两台服务器计算机后,rsync 无法在sudo crontab. 我还设置了一个新的 cronjob 但它失败了,错误是:
rsync error: unexplained error (code 255) at io.c(600) [sender=3.0.6]
rsync: connection unexpectedly closed (0 bytes received so far) [receiver]
Run Code Online (Sandbox Code Playgroud)
但是,当从终端运行时,rync 脚本按预期工作,没有问题。请帮忙。
我需要将文件树 rsync 到 kubernetes 集群中的特定 pod。如果只有一个人可以说服 rsync 相信 kubectl 的行为有点像 rsh,那似乎应该是可能的。就像是:
rsync --rsh='kubectl exec -i podname -- ' -r foo x:/tmp
Run Code Online (Sandbox Code Playgroud)
...除了这会遇到 x 问题,因为 rsync 假设需要一个主机名:
exec: "x": executable file not found in $PATH
Run Code Online (Sandbox Code Playgroud)
我似乎找不到帮助 rsync 构建 rsh 命令的方法。有没有办法做到这一点?或者可以通过管道实现相对高效的文件传输的其他方法?
(我知道gcloud compute copy-files,但它只能在节点上使用?)
我目前在 Linux 主机上使用 rsync 将内容从 Windows 复制到我的 Linux 机器上。但我无法复制长名称的文件。
我尝试过DeltaCopy、cwrsync和cygwin。据我发现,当文件长度变长时,所有这些工具都拒绝复制文件,这似乎在 255 个字符左右。
这个问题在cwrsync论坛讨论在这里和它理应可以在将来某个时候,每当Cygwin的1.7出来和支持UTF8固定。甚至有一个测试版本在这里。
我不太习惯在生产系统上使用测试版本。我希望有人知道另一个 rsync 选项。
作为 rsync 的替代方案,您知道我可以从 Windows 主机复制 Linux 上的目录结构的另一种工具吗?重要的一点是我需要一个可以轻松跨 SSH 隧道工作的工具。一些系统超越了防火墙,我相信 SSH 是我被允许使用的隧道。
rsync可以mv使用以下选项非常相似地将文件夹哄入移动文件夹中,并且优于传统文件夹:
rsync -axvvES --remove-source-files source_directory /destination/
Run Code Online (Sandbox Code Playgroud)
但是,我似乎还无法完成的一件事是删除原始目录。该--remove-source-files标志就是这样做的,删除源文件,但不删除源目录。我也希望有--remove-source-directories一面旗帜,但没有。
我该如何处理? 我想我可以rm -fr在移动后发出一个,但是我更愿意将整个过程保持在一个过程中,而不是引入潜在的错误。
如果我运行的是现代 vmware ESXi 系统,我可以通过 SSH 将静态链接的 rsync 二进制文件和 rsync 文件放入任何目的地。
我试图理解为什么大多数(全部?)vmware 来宾备份不是通过这种方式完成的。
如果 VM 正在运行,您可以简单地使用“vim-cmd vmsvc/snapshot.create”来创建快照,然后将该快照同步到远程主机。(甚至可以选择“停顿”快照)
或者,如果您想要更强大的备份,您可以优雅地停止 VM 并通过 vmdk 文件进行 rsync。
所以......看起来我是一个简单的shell脚本,远离我想要做的所有备份,简单而轻松,使用普通的旧rsync。
我在这里错过了什么?
想象一下,我有一个文件remote/A,其同步到local/A并且local/B是硬链接local/A。是否存在下一次remote/A更改和同步rsync不会删除local/A而只会替换/添加某些部分从而更改local/B(由于硬链接)的威胁?
我通过 rsync 收到此消息:
symlink has no referent: "/a/path"
Run Code Online (Sandbox Code Playgroud)
嗯,rsync 是对的:在源文件系统中,(符号)链接指向一个不存在的位置。这是有意的。链接的目标仅存在于目标文件系统中。我希望 rsync 忽略这个事实并在目标中创建符号链接。
如何强制 rsync 这样做?
我杀死了一个本地“rsync -ah”进程。
它在目标目录中留下了像“.abc.vmdk.zxivMN”这样的垃圾文件。
垃圾文件不会在连续的“rsync -ah”运行中被删除。
详细信息:
我在同步的两个文件夹上运行 diff 并报告:“仅在 /mnt/archive1/documents/general: .abc.vmdk.zxivMN”
清理临时 rsync 文件的最佳方法是什么?
尝试使用以下rsync命令更新服务器上的文件:
rsync -ravq -e "ssh -o ConnectTimeout=2 -o ServerAliveInterval=2 -ServerAliveCountMax=2" --delete ./local_dir user@$SERVER:/dest_dir
Run Code Online (Sandbox Code Playgroud)
corrupt packet 错误不断被抛出,特别是:
rsync: writefd_unbuffered failed to write 4092 bytes to socket [sender]: Broken pipe (32)
rsync: connection unexpectedly closed (11337 bytes received so far) [sender]
rsync error: unexplained error (code 255) at /home/lapo/package/rsync-3.0.9-1/src/rsync-3.0.9/io.c(605) [sender=3.0.9]
Run Code Online (Sandbox Code Playgroud)
这可能与ssh超时有关,因为它似乎发生在大(r)文件中。另外,我一直在使用 WinSCP 超时。这只会发生在我身上;与我一起工作的几个使用此服务器的人没有同样的问题。
rsync从 Windows 7 中的 Cygwin 终端使用Centos 6.3 服务器。
我不确定还有哪些其他信息可能有用或如何获取这些信息。我会根据任何建议更新问题或添加评论。
我应该如何解决这个问题?
非常感谢!
rsync ×10
backup ×1
bash ×1
corruption ×1
hardlink ×1
high-load ×1
incrontab ×1
ionice ×1
kubernetes ×1
linux ×1
packetloss ×1
shell ×1
ssh ×1
vmware-esx ×1
vmware-esxi ×1
windows ×1
zsh ×1