Ответы:
Самый простой способ, если вы не особенно нужно использовать , -C
чтобы сообщить tar
изменения в какой - то другой каталог, чтобы просто указать полный путь к архиву в командной строке. Затем вы можете находиться в любом каталоге, который вы предпочитаете, для создания структуры каталогов, которую вы хотите внутри архива.
Следующее создаст архив /var/www/file.tar.gz
и поместит его file1
из текущего каталога (каким бы он ни был) в него, без информации о пути в архиве.
tar czf /var/www/file.tar.gz file1
Путь (к архиву, составным файлам или к обоим), конечно, также может быть относительным. Если вы находитесь file1
в /tmp
, вы находитесь в /var/spool
и хотите создать архив /var/www
, вы можете использовать что-то вроде:
tar czf ../www/file1.tar.gz /tmp/file1
Есть миллион вариаций на тему, но это должно помочь вам начать. Добавьте v
флаг, если вы хотите увидеть, что на tar
самом деле делает.
$PWD
такое, в примере показалось безопаснее использовать абсолютный путь.
file1
в архиве tar будет /tmp
. Это может или не может быть то, что вы ожидаете.
Я превращаю сжатые данные в поток (-) и легко переименовываю и определяю местонахождение (>), где бы я ни выбрал (Также я всегда сохраняю относительный путь (./), чтобы легче было распаковывать)
tar -cvf - ./dir-to-compress/* > /location-of-new-file/filename.tar
-C
намного более идиоматично (и короче).
Я думаю, это должно быть:
tar czf file.tar.gz -C /var/www/ file1
Который работает для меня. Он говорит, чтобы изменить каталог, а затем выбрать файл.
-C
(что не странно, поскольку оно задокументировано смутно). Для получения дополнительной информации см. Serverfault.com/q/416002/86283 .