Команда Tar версия Solaris для файлов размером более 2 ГБ
У нас есть несколько файлов размером более 2 ГБ, тарированных с помощью команды tar версии UNIX (SunOS 5.5 с последним изменением: 1995!). Имеется флаг "E" для файлов tar> 2 ГБ. Вот как это было сделано:
rsh sun_server tar cvEf - abc/file1 abc/file2 | rsh archive_server archive_cmd
Обратите внимание, что archive_server также является сервером UNIX и использует ту же версию команды tar.
При получении мы делаем так:
cd /destination_path/
rsh archive_server retrieve_cmd | tar xvf -
Что случилось, файлы извлекаются в /abc/ (в родительском каталоге); не в /destination_path/abc/
Странно то, что мы изменили метод получения на gtar:
cd /destination_path/
rsh archive_server retrieve_cmd | gtar xvf -
Для файлов размером более 2 ГБ в конце выдается много ошибок "плохой заголовок" и "исчерпана память".Однако для файлов размером менее 2 ГБ они обычно извлекаются в /destination_path/abc/!
Нам нужно извлечь файлы размером> 2 ГБ в /destination_path/abc/, потому что в / abc / есть много файлов с одинаковыми именами, и мы боимся, что извлеченные файлы перезапишут их..
Я тоже пробовал
rsh archive_server retrieve_cmd | tar xvf - /destination_path/
а также
cd /destination_path/
rsh archive_server retrieve_cmd | tar xvf - .
Но результат: нет результата! Это показывает, что извлечение завершено успешно, но ни один файл не извлечен ни в / abc /, ни в /destination_path/!
Есть ли способ извлечь эти файлы по желаемому пути назначения?
4 ответа
rsh быстрее, чем ssh, но я предпочитаю ssh. это должно работать, заменяя ssh на rsh.
gtar -cf - файлы | ssh user@host "(cd /destPath; gtar -xf -)"
Ключ здесь заключен в круглые скобки.
Вы должны использовать GNU tar (gtar) с обеих сторон. Tar Solaris будет молча испортить файлы>2 ГБ. Кроме того, он будет тихо испортить файлы с длинными именами файлов.
Можно подумать, что вы можете использовать команду split, чтобы разбить архив tar на несколько частей... Например, рассмотрим что-то вроде:
tar cf - <dirspec> | split --bytes=1GB <destdir>/archive.
Назначением может быть смонтированная файловая система NFS. Или вы можете затем отправить их из локального источника с множеством одновременных команд удаленного копирования, если вы захотите потом.
Тогда вы можете распечатать вещь в любое время в месте назначения, используя:
cd <destdir>
cat archive.* | tar xf -
В сети у меня была бы небольшая проблема с передачей непрерывного потока байтов так долго в зависимости от расстояния. Меньшая передача сегмента, вероятно, предпочтительнее в любом случае, чтобы легче было восстанавливаться после сетевых сбоев.
Чтобы сделать вещи меньше, вы можете добавить в смесь gzip/gunzip в зависимости от того, сколько процессорного времени вы можете себе позволить.
Некоторые из приведенных выше ответов будут работать, однако, проверьте pax. он должен был заменить tar и cpio и более элегантно справиться с этой задачей. большинство людей не приняли этот инструмент из-за его широкой распространенности, но на самом деле он довольно хорош.
cptfrl