Skip to content

Instantly share code, notes, and snippets.

@tierpod
Last active January 19, 2016 07:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tierpod/bb47df0bf9248a4a37f0 to your computer and use it in GitHub Desktop.
Save tierpod/bb47df0bf9248a4a37f0 to your computer and use it in GitHub Desktop.
Transfer a huge number of files over ssh

rsync

#!/bin/sh

RSYNC='ionice -c 3 nice -n 17 rsync'

$RSYNC --inplace --bwlimit=2000 -Wvr [-pgo] [--progress] --log-file=/tmp/rsync.log \
    --rsync-path="$RSYNC" src dest

speed-up transferring

  • --inplace обновлять файл назначения прямо на месте
  • -W копировать весь файл, бед delta-xfer сравнения
  • -v подробный вывод действий
  • -r рекурсивно
  • --rsync-path позволяет задать ionice/nice для процесса rsync
  • --rsh="ssh -c arcfour" передавать данные по ssh с наименее тяжёлым шифрованием

slow-down tranferring

  • --bwlimit=2000 ограничить скорость i/o (kb/s), полезно для боевого нагруженного сервера
  • -p сохранять права доступа
  • -g сохранять группу
  • -o сохранять владельца
  • --progress отображать прогресс, в случае большого количества мелких файлов - бесполезно

tar

#!/bin/sh

TAR='ionice -c 3 nice -n 17 tar'

cd /src
$TAR cvf - src-dir | ssh dst-host "cd /src; $TAR xvf - | tee -a /tmp/tar.log"

nice/ionice

  • ionice -c 3 i/o приоритет idle, позволяет читать файлы, только когда другие операции не требует i/o
  • nice -n 17 максимально значение 19, процесс наиболее "вежливый"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment