Когда Вы отправляете тот же набор файлов, rsync
лучше подходит, потому что это только отправит различия. tar
будет всегда отправлять все, и это - трата ресурсов, когда много данных уже там. tar + rsync + untar
теряет это преимущество в этом случае, а также преимущество хранения папок в синхронизации с rsync --delete
.
Если Вы копируете файлы впервые, сначала делание пакет, то, отправляя, то распаковка (AFAIK rsync
не берет переданный по каналу, вводят), является громоздким и всегда хуже, чем просто rsyncing, потому что rsync
не должен будет делать никакой задачи больше, чем tar
так или иначе.
Подсказка: версия 3 rsync или позже делает возрастающую рекурсию, означая, что она начинает копировать почти сразу, прежде чем она будет считать все файлы.
Tip2: Если Вы используете rsync
ssh
, можно также использовать также tar+ssh
tar -C /src/dir -jcf - ./ | ssh user@server 'tar -C /dest/dir -jxf -'
или просто scp
scp -Cr srcdir user@server:destdir
Общее правило, сохраните это простым.
ОБНОВЛЕНИЕ:
Я создал 59M демонстрационные данные
mkdir tmp; cd tmp
for i in {1..5000}; do dd if=/dev/urandom of=file$i count=1 bs=10k; done
и тестируемый несколько раз передача файлов к удаленному серверу (не в той же LAN), с помощью обоих методов
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 и в то время как файлы являются 10k размером. rsync+tar имел больше генерируемого трафика, был медленнее в течение 2-3 секунд и оставил два файла мусора, которые должны были быть очищены.
Я сделал те же тесты на двух машинах на той же LAN, и там rsync+tar сделал намного лучшие времена и много намного меньше сетевого трафика. Я принимаю причину крупных кадров.
Возможно, rsync+tar был бы лучше, чем просто rsync на намного большем наборе данных. Но откровенно я не думаю, что это стоит проблемы, Вам нужен двойной интервал в каждой стороне для упаковки и распаковки, и существует несколько других опций, как я уже упомянул выше.
Uuencode: кодируйте программой uuencode имя <исходный файл
возможно, просто нужна заключительная пустая строка: добавить ; echo -e "\n\n" ;
перед закрывающей скобкой, и попробовали еще раз? -
Таким образом в Вашем случае:
( cat bodyText.txt; uuencode backup.tar < backup.tar ; echo -e "\n\n" ; ) | mail -s "backup" myEmail@myserver.com
Иначе использует mutt
который обрабатывает вложения лучше и знает о типах пантомимы и т.д.:
mutt -s "the subject" -a backup.tar -- myEmail@myserver.com < bodyText.txt
Как другие сказали, Управление-D состоит в том, как Вы говорите оболочке отправлять конец файла. Процессы, читающие из потоков, должны получить конец файла, когда поток закрывается.
Но кажется, что Вы пытаетесь реализовать что-то, что уже существует в большем, заполняют форму. У Вас могли быть причины того, конечно, но если Вы интересуетесь существующими решениями, mpack/munpack являются программами командной строки, что пантомима кодирует файлы и отправляет через почту. Можно прочитать страницу справочника, чтобы видеть, делает ли она то, что Вы хотите.
Сделайте Вы имеете в виду:
uuencode backup.tar < bodyText.txt | mail -s "backup" myEmail@myserver.com
uuencode
не имеет никакого смысла и изменения, с которым часть не помогла бы с проблемой mail
в любом случае. Необходимо записать ответы, которые объясняют проблему, не только выводят строку кода: это было бы более полезно для читателей и поможет Вам выяснить, имеет ли то, что Вы предлагаете, шанс решения проблемы. попытка
– Gilles 'SO- stop being evil'
10.01.2013, 15:20
Используйте подробный режим (-v), чтобы избежать ctrl+d
echo -e 'Mail body'| mail -v -s 'Mail Subject' my@email.com
uuencode backup.tar backup.tar
для части – Olivier Dulac 10.01.2013, 15:23type -all uuencode
в ударе и если это - псевдоним, попробовать\uuencode backup.tar backup.tar
(с "\" для обхода псевдонима) – Olivier Dulac 10.01.2013, 15:25mutt
альтернатива также. Право – Olivier Dulac 10.01.2013, 15:34