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