我正在尝试设置 rsync 以每天从服务器复制数据。为了尽可能限制系统,我尝试使用手册页中描述的模式:“通过远程外壳连接使用 RSYNC-DAEMON 功能”
所以我在根目录文件夹中放置了一个名为 rsyncd.conf 的文件:
[root]
path = /
read only = true
Run Code Online (Sandbox Code Playgroud)
并尝试复制 /etc/passwd 作为测试:
rsync -vv -e ssh myserver::root/etc/passwd .
Run Code Online (Sandbox Code Playgroud)
但我得到以下信息:
opening connection using: ssh myserver rsync --server --daemon .
rsync: connection unexpectedly closed (0 bytes received so far) [receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(635) [receiver=3.0.3]
Run Code Online (Sandbox Code Playgroud)
我做这一切的原因是,一旦我开始工作,我计划通过指定命令来限制访问
rsync --server --daemon .
Run Code Online (Sandbox Code Playgroud)
在 ~/.ssh/authorized_keys
当我运行rsync涉及复制大文件的备份作业时,运行备份的机器(Mac 台式机和 Linux 服务器)会停止工作,平均负载会飙升。
我试过了:
nice处理rsync过程(无济于事 - 瓶颈是磁盘)reniceing a kjournald( 有帮助,但似乎是一个 hack 并且在 Mac 上不起作用)--bwlimit rsync标志(有帮助,但这意味着所有传输都很慢 - 即使它们不需要)那么,有没有什么办法可以让“ nice”rsync的 IO 使机器在备份运行时可用?
PS:我知道rsync在 Mac 上的危险……但是我已经使用BackupBouncer来验证我的备份,而且它们看起来还不错。
稍后责备我使用服务控制台在 ESXi 中执行任何操作的事实...
我有一个可以在 ESXi 4.1U1 中使用的有效 rsync 二进制文件 (v3.0.4)。将虚拟机或备份从一个本地数据存储复制到另一个本地数据存储时,我倾向于使用 rsync over cp。我已经使用 rsync 将数据从一个 ESXi 盒子复制到另一个盒子,但这仅适用于小文件。
现在尝试在我的主要 ESXi 机器和辅助机器之间通过ghettoVCB进行备份的真正差异同步。但即使我在本地执行此操作(一个数据存储到同一台 ESXi 机器上的另一个数据存储),rsync 似乎也能完整地复制文件。我有两个总大小为 80GB 的 VMDK,而 rsync 仍然需要 1 到 2 个小时,但 VMDK 的每天增长并不多。
下面是我正在执行的 rsync 命令。我正在本地复制,因为最终这些文件将被复制到从远程系统上的 LUN 创建的数据存储上。它不是由远程系统上的 rsync 守护程序提供服务的 rsync。
rsync -avPSI VMBACKUP_2011-06-10_02-27-56/* VMBACKUP_2011-06-01_06-37-11/ --stats --itemize-changes --existing --modify-window=2 --no-whole-file
sending incremental file list
>f..t...... VM-flat.vmdk
42949672960 100% 15.06MB/s 0:45:20 (xfer#1, to-check=5/6)
>f..t...... VM.vmdk
556 100% 4.24kB/s 0:00:00 (xfer#2, to-check=4/6)
>f..t...... VM.vmx
3327 100% 25.19kB/s …Run Code Online (Sandbox Code Playgroud) 我想将时间戳和文件列表添加到日志中。目前,我只能得到一个。以下命令可以跟踪更新的文件列表,但不会添加时间戳。
rsync -avz --progress --delete /web/path/public_html/ $newhost:/web/path/public_html >> /var/log/rsync.log
sent 2345743 bytes received 43205 bytes 530877.33 bytes/sec
total size is 14828110173 speedup is 6206.96
sending incremental file list
error_log 5740980 100% 36.98MB/s 0:00:00 (xfer#1, to-check=1405/1524)
sent 2344322 bytes received 51694 bytes 684576.00 bytes/sec
total size is 14828115593 speedup is 6188.65
Run Code Online (Sandbox Code Playgroud)
下面的命令可以向日志添加时间戳,但它不会告诉哪些文件被更新。
rsync -avz --progress --delete /web/path/public_html/ $newhost:/web/path/public_html --log-file=/var/log/rsync1.log --log-file-format="%t \n"
2012/01/03 17:30:05 [10505] Total transferred file size: 6170062 bytes
2012/01/03 17:30:05 [10505] Literal data: 5470 bytes
2012/01/03 17:30:05 [10505] Matched …Run Code Online (Sandbox Code Playgroud) 我们在 .server-1 中有一个文件的中央存储库/srv/www。然后我们也有 N 台服务器。我们希望 server-1 能够/srv/www尽可能快速有效地将其文件部署到所有服务器。
是否有类似 rsync 的东西,但不是指定单个目标,而是指定目标集群(N 个服务器)?
我在想git可能有用,但是我们也可以指定多个遥控器来推送吗?
假设 N 个服务器最终可能达到数百个,最好的解决方案是什么。
我收到以下命令并出现此错误
rsync -avz --links -O /home/jansiatest/.jenkins/workspace/svn_to_demo/trunk/CPS/ jansia@ps27670.dreamhost.com:/home/tasklite/temp
sending incremental file list
./
rsync: failed to set permissions on "/home/tasklite/temp/.": Operation not permitted (1)
Run Code Online (Sandbox Code Playgroud)
但问题是我不想更改“/home/tasklite/temp/”的权限。我该如何设置?
我很困惑为什么 rsync 需要 --rsync-path 标志,即使远程 rsync 在路径中。
考虑:
$ rsync -avze 'ssh -p 22' --delete public/ pmatos@domain.com:~/public_html
bash: /usr/local/bin/rsync: No such file or directory
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: remote command not found (code 127) at io.c(601) [sender=3.0.7]
Run Code Online (Sandbox Code Playgroud)
然后我尝试添加 --rsync-path
$ rsync -avze 'ssh -p 22' --rsync-path=/usr/bin/rsync --delete public/ pmatos@domain.com:~/public_html
sending incremental file list
...
Run Code Online (Sandbox Code Playgroud)
因此,第一个 rsync 没有成功,因为它正在 /usr/local/bin 中搜索 rsync,但是一旦我使用 --rsync-path 传递了 rsync 的明显路径,它就会起作用。
为什么是这样?(此命令行是 octopress 中 rake deploy 发出的命令行)
在我的一台服务器上,我运行了一个 rsync,将一个巨大的目录(大小大于 300 Gb)备份到安装在同一台机器上的不同磁盘上。被 rsync 的目录包含数千个目录和文件。我使用“nohup”发出了一个 rsync 命令,然后使用“&”命令将其推送到后台。在远程 bash shell(使用 putty)上给出的完整命令是:
nohup rsync -avh /some/local/dir /backup/ >> /opt/rsync.dec22.log &
Run Code Online (Sandbox Code Playgroud)
然后只是为了检查复制数据的速度,我使用了“iotop”命令,发现有 3 个 rsync 使用相同的参数运行。在搜索时,我发现上面的链接说这是正常的。
但是在执行 iotop 以仅监视系统上运行的那些和唯一的 rsync 进程时,我看到一个进程正在读取文件,一个正在写入文件,但一个进程处于空闲状态。行为似乎很好,因为一个进程一次只做一件事,但是第三个进程在做什么(如下图中间的一个)?
我使用的 iotop 命令是:
iotop -p22250 -p22251 -p22252
Run Code Online (Sandbox Code Playgroud)
这是 iotop 命令输出的屏幕截图:

我问这个是因为我经常使用 rsync,并想了解它的行为以获得长期利益。我什至阅读了手册,但它没有提到分叉。
我正在使用 rsync 将一些数据从一台服务器备份到另一台服务器。一切正常,但可能需要更长的时间才能完成,具体取决于要传输的数据量。
是否有任何保证方法可以确保 rsync 命令在上一个使用 cronjob 完成之前不会启动?
例如,我每小时运行 rsync 命令,但传输可能需要 1 个多小时才能完成,因此下一个将在前一个完成之前开始。
我想从特定日期和转发 rsync 文件夹。例如。我想同步我 3 天前(当然还有 2 天前、一天前等)创建的文件夹。我知道我需要使用 find 和 rsync 但我不确定如何使用。任何的想法?谢谢!多坦。
rsync ×10
linux ×4
backup ×1
centos ×1
chmod ×1
command ×1
cron ×1
deployment ×1
find ×1
git ×1
nice ×1
path ×1
ssh ×1
vmware-esx ×1
vmware-esxi ×1