Вы хотите создать tar-файл вне того места, где находятся файлы, которые вам нужны для tar?
Есть много способов сделать это.
Если он должен быть создан локально (= на той же машине):
tar czvf /path/to/destination/newfile.tar.gz ./SOURCEDIR_OR_FILES
Вы можете добавить дополнительные файлы или каталоги в tar в конце этой команды.
Если он должен быть создан удаленно (т.е. вы хотите создать tar-файл на удаленном хосте из того, который содержит данные для тарирования):
tar czvf - ./SOURCEDIR_OR_FILES | ssh user@host 'cat > newfile.tar.gz'
Более поздняя версия очень универсальна. Например, вы также можете «продублировать» каталог + подкаталоги, используя ту же технику:
Дублируйте каталог + подкаталоги в другой локальный каталог:
tar cf - ./SOURCEDIR_OR_FILES | ( cd LOCAL_DEST_DIR && tar xvf - )
Дублируйте каталог + подкаталоги в другой удаленный каталог:
tar cvf - ./SOURCEDIR_OR_FILES | ssh user@host 'cd REMOTE_DEST_DIR && tar xf - '
Удалите символ 'v', если он не нужен для отображения файлов в том виде, в котором они были записаны (или не подвергнуты обработке): тогда он будет работать намного быстрее, но ничего не скажет, если не будет ошибки.
Я использую «. / ...» для источника, чтобы заставить tar сохранить его как ОТНОСИТЕЛЬНЫЙ путь. В некоторых случаях вы захотите добавить дополнительную информацию о пути:
Например, для tar-файла crontab, в том числе в / etc, вы можете сделать:
cd / ; tar czf all_crons.tgz ./etc/*cron* ./var/spool/cron
Я специально использую относительный путь: некоторые OLD-версии tar могут быть опасными и извлекать файлы с их исходным GLOBAL-путем, то есть вы можете это сделать: cd /safedir ; tar xvf sometar
и файлы с глобальными именами перезаписывают файлы по своему первоначальному пути, то есть OUTSIDE of / safedir а не под ним! Очень опасно, и все еще возможно, поскольку существуют старые производственные серверы. Лучше всегда использовать относительные пути, даже если вы используете более позднюю версию tar.
cd /opt; tar zcf $HOME/junk.tar.gz junk
.