Коли ви надсилаєте один і той же набір файлів, rsync
краще підходить, оскільки він надсилатиме лише відмінності. tar
завжди надсилатиме все, і це марна трата ресурсів, коли багато даних вже є. При tar + rsync + untar
цьому втрачається ця перевага, а також перевага підтримувати синхронізацію папок rsync --delete
.
Якщо ви копіюєте файли вперше, спочатку пакуєте, потім відправляєте, а потім розпаковувати (AFAIK rsync
не приймає трубопровідний вхід) є громіздким і завжди гіршим, ніж просто rsyncing, тому що rsync
не доведеться виконувати жодне завдання більше, ніж tar
все одно.
Порада: rsync версії 3 або пізнішої версії виконує поступову рекурсію, це означає, що вона починає копіювати майже одразу, перш ніж підраховувати всі файли.
Порада 2: Якщо ви використовуєте rsync
більше ssh
, ви можете також використовувати будь-якийtar+ssh
tar -C /src/dir -jcf - ./ | ssh user@server 'tar -C /dest/dir -jxf -'
або просто scp
scp -Cr srcdir user@server:destdir
Загальне правило, нехай це буде просто.
ОНОВЛЕННЯ:
Я створив 59 млн демо-даних
mkdir tmp; cd tmp
for i in {1..5000}; do dd if=/dev/urandom of=file$i count=1 bs=10k; done
і кілька разів перевіряли передачу файлів на віддалений сервер (не в одному ланцюзі), використовуючи обидва способи
time rsync -r tmp server:tmp2
real 0m11.520s
user 0m0.940s
sys 0m0.472s
time (tar cf demo.tar tmp; rsync demo.tar server: ; ssh server 'tar xf demo.tar; rm demo.tar'; rm demo.tar)
real 0m15.026s
user 0m0.944s
sys 0m0.700s
зберігаючи окремі журнали від відправлених пакетів трафіку ssh
wc -l rsync.log rsync+tar.log
36730 rsync.log
37962 rsync+tar.log
74692 total
У цьому випадку я не бачу жодної переваги в меншій кількості мережевого трафіку, використовуючи rsync + tar, який очікується, коли mtu за замовчуванням становить 1500, а файли розміром 10 к. rsync + tar отримував більше трафіку, був повільнішим на 2-3 секунди і залишив два файли сміття, які довелося прибрати.
Я робив ті ж тести на двох машинах на одному ланцюзі, і там rsync + tar робив набагато кращі часи та набагато менше мережевого трафіку. Я припускаю, що причини джамбо кадрів.
Можливо, rsync + tar буде кращим, ніж просто rsync у набагато більшому наборі даних. Але, чесно кажучи, я не думаю, що це вартує клопоту, вам потрібно подвійне місце в кожній стороні для упаковки та розпакування, і є кілька інших варіантів, як я вже згадував вище.