При копировании каталога «home» (с удаленного компьютера) на локальный с помощью следующей команды:
ssh root@remote.machine 'tar -cz -C /home/*' | tar -zxv
Количество файлов после транзакции не совпадает. Некоторые файлы никогда не копировались.
Кто-нибудь испытывал подобные проблемы?
Вместо этого используйте rsync. Это быстрее и безопаснее.
rsync -avuz root@remote.machine:/home/ /srv/backups/home/
Затем вы можете сжать данные.
tar cvzf /srv/backups/home_`date +%F`.tgz -C /srv/backups home
Одна проблема с использованием tar
для копирования файлов заключается в том, что старый формат tar POSIX (ustar
) имеет ограниченную длину 100 байт для хранения жестких ссылок. Он может справиться дольше имена, так что пока у ваших файлов одна ссылка, все в порядке. Но когда tar встречает индексный дескриптор во второй раз, он создает запись жесткой ссылки, содержащую всего 100 байтов для имени. Если имя слишком длинное, вторая ссылка не сохраняется в архиве.
Я действительно припоминаю реализации tar, которые отбрасывали эти ссылки с диагностическими сообщениями, но все равно выходили со статусом 0. Возможно, ваш tar еще хуже и молча их отбрасывает.
В новый формат tar POSIX (pax
) не имеет этого ограничения. Попробуйте использовать pax
вместо того tar
, или tar
с правильными вариантами. Текущие версии GNU tar по умолчанию используют формат pax и правильно жалуются, если им сказали создать ustar
архив, где имена не подходят.