在远程机器上很好的rsync

当使用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... 

(rsync行被剪切)

这是一个通常在凌晨4点运行的备份cron作业,但是当我碰巧醒来(并提交,或者使用同一台机器上的Bugzilla)时,它会导致服务器性能下降,所以我想快速“破解”来尝试修复这一点。

你可以使用--rsync-path选项,例如。

 rsync --rsync-path="nice rsync" foo remotebox:/tmp/ 
  • rsync --rsync-path="ionice -c 3 nice -n 12 rsync" localDirectory remoteHost:/tmp/
  • 使用configuration文件选项,您可以在文件/etc/default/rsync更改或取消注释RSYNC_NICE='17'值和RSYNC_IONICE='-c3'

对于这两个ionice值将为硬盘优先

  • 1 – >实时
  • 2 – >尽最大的努力
  • 3 – > Ildle(当其他进程不使用HD时)

对于处理器优先级的好处

  • -20(最有利于过程)
  • (默认值为10),如果没有指定-n
  • 19(对过程最不利)

快速和肮脏的解决scheme是创build一个名为“rsync”的小包装脚本,在实际的rsync二进制文件之前将$ PATH遮蔽,如下所示:

 #!/bin/sh nice -10 /path/to/proper/rsync $* 

或者设置authorized_keys文件,以便它执行rsync的nicing。 (假设您使用ssh密钥)。

例:

 command=”/home/user/bin/nice-rsync.sh" ssh-dss asdf.... 

现在在/home/user/bin/nice-rsync.sh中

 #!/bin/sh case $SSH_ORIGINAL_COMMAND in rsync\ --server*) nice -10 $SSH_ORIGINAL_COMMAND ;; *) $SSH_ORIGINAL_COMMAND ;; esac 

HTH

您可以通过不包含-z参数来禁用沿networking的压缩,这可能会节省一些CPU时间。 或者改变rsync如何使用校验和,看看--checksum

Rsync不应该使用太多的CPU。 我怀疑你可以从另一端强制一定的好处,但你可以做的是限制rsync与防火墙使用的带宽,这将最终减less在X时间内可以做多less处理。

我不这么认为,你需要一个自定义的解决scheme..使用FTP