Как создать архив tar в другом каталоге?

39

Я хочу создать архив tar в другом каталоге, а не в текущем каталоге.

Я попробовал эту команду:

tar czf file.tar.gz file1 -C /var/www/

но он создает архив в текущем каталоге. Зачем?

Омид
источник
3
Вы, кажется, неправильно поняли значение -C(что не странно, поскольку оно задокументировано смутно). Для получения дополнительной информации см. Serverfault.com/q/416002/86283 .
NN

Ответы:

48

Самый простой способ, если вы не особенно нужно использовать , -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самом деле делает.

CVn
источник
1
Вы также можете использовать относительный путь.
NN
@NN Абсолютно, но так как мы не имеем ни малейшего представления о том, что $PWDтакое, в примере показалось безопаснее использовать абсолютный путь.
CVn
Действительно, я просто подумал, что имеет смысл включить это, чтобы показать, что это доступный вариант для решения проблемы.
NN
Таким образом, путь file1в архиве tar будет /tmp. Это может или не может быть то, что вы ожидаете.
Mouviciel
8

Я превращаю сжатые данные в поток (-) и легко переименовываю и определяю местонахождение (>), где бы я ни выбрал (Также я всегда сохраняю относительный путь (./), чтобы легче было распаковывать)

tar -cvf - ./dir-to-compress/* > /location-of-new-file/filename.tar
Дэвид Кинг
источник
Это не помогает с отдельными файлами, и -Cнамного более идиоматично (и короче).
Махмуд Аль-Кудси
3

Я думаю, это должно быть:
tar czf file.tar.gz -C /var/www/ file1

Который работает для меня. Он говорит, чтобы изменить каталог, а затем выбрать файл.

user2039152
источник
-2

Работал отлично

cd /home; tar -czvf - /var/log/* > varlog.tar.gz
Myhera
источник