Это должно быть очень просто для экспертов здесь.
У меня есть учетная запись Linux с пользовательской дисковой квотой всего 6 ГБ. Существует некоторая папка /opt
с данными объемом около 3 ГБ, с которыми при сжатии получается 1 ГБ. Есть несколько символических ссылок внутри data-folder
. Обычно для создания рабочей резервной копии я делал следующее.
cp -rvfL /opt/data-folder ~/
cd ~/
tar -zcvf data-folder.tar.gz data-folder
rm -rvf data-folder
Теперь я уже израсходовал 2,5 ГБ в моей пользовательской квоте диска, у меня достаточно места для копирования файлов в мой дом, но не в tar
него снова.
Есть ли способ tar и скопировать папку с помощью одной команды, скажем, с помощью канала.
PS Я не могу войти, /opt
потому что у меня есть доступ только для чтения /opt
.
cd /opt; tar zcf $HOME/junk.tar.gz junk
.Ответы:
Вы хотите создать tar-файл вне того места, где находятся файлы, которые вам нужны для tar?
Есть много способов сделать это.
Если он должен быть создан локально (= на той же машине):
Вы можете добавить дополнительные файлы или каталоги в tar в конце этой команды.
Если он должен быть создан удаленно (т.е. вы хотите создать tar-файл на удаленном хосте из того, который содержит данные для тарирования):
Более поздняя версия очень универсальна. Например, вы также можете «продублировать» каталог + подкаталоги, используя ту же технику:
Дублируйте каталог + подкаталоги в другой локальный каталог:
Дублируйте каталог + подкаталоги в другой удаленный каталог:
Удалите символ 'v', если он не нужен для отображения файлов в том виде, в котором они были записаны (или не подвергнуты обработке): тогда он будет работать намного быстрее, но ничего не скажет, если не будет ошибки.
Я использую «. / ...» для источника, чтобы заставить tar сохранить его как ОТНОСИТЕЛЬНЫЙ путь. В некоторых случаях вы захотите добавить дополнительную информацию о пути:
Например, для tar-файла crontab, в том числе в / etc, вы можете сделать:
Я специально использую относительный путь: некоторые OLD-версии tar могут быть опасными и извлекать файлы с их исходным GLOBAL-путем, то есть вы можете это сделать:
cd /safedir ; tar xvf sometar
и файлы с глобальными именами перезаписывают файлы по своему первоначальному пути, то есть OUTSIDE of / safedir а не под ним! Очень опасно, и все еще возможно, поскольку существуют старые производственные серверы. Лучше всегда использовать относительные пути, даже если вы используете более позднюю версию tar.источник
-cvf
вместоcvf
, другие не узнают-
стиль. Иz
раньше означало «сжимать с помощью« compress »», но в «недавнем» tar это означает «сжимать с помощью gzip». Вы можете знать , какая используется сжатие на файл с:file zefile
. А затем переименуйте его соответствующим образом (если вы используете tarcompress
, его лучше переименовать .tar.Z, а не .tar.gz)Используйте
-h
опцию tar. Со страницы руководства:так что вы можете использовать
tar -zcvfh data-folder.tar.gz /opt/data-folder
источник
bsdtar
вместо этого, илиpax
(cd /opt && pax -Lw data-folder | gzip > ~/data-folder.tar.gz
), который обнаружит петлиtar -rf <tarfilename> <filename>
чтобы добавить в существующий файл tar.