Назад | Перейти на главную страницу

ssh tar copying - отсутствующие файлы

При копировании каталога «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 архив, где имена не подходят.