Запаковать файл с tar.gz из корневого каталога


8

Я пытаюсь упаковать файл .csv с tar.gz, находясь в корневом каталоге.

Файл myfile.csvрасположен в /mnt/sdb1/ Итак, полное имя файла/mnt/sdb1/myfile.csv

Я пытаюсь сохранить tar.gz под /mnt/sdb1/old_files

Я попробовал это так:

tar -czf /mnt/sdb1/old_files/new.tar.gz mnt/sdb1/myfile.csv

Но когда я извлекаю файл, то будет извлечена папка с именем "mnt", которая содержит другую папку с именем "sdb1", которая содержит файл.

Можно ли сжать только файл, а не копировать все каталоги?

Ответы:


12

используйте --directoryопцию из man tar:

-C, - -директория DIR

перейти в каталог DIR

то есть:

tar -C /mnt/sdb1/ -czf /mnt/sdb1/old_files/new.tar.gz myfile.csv

Спасибо Фиксиман! Это решило проблему. Я буду голосовать, как только у меня будет 15 репутации.
Черный,

3

Вы должны сначала cd /mnt/sdb1, а затем запустить tarкоманду.

К вашему сведению, вам не нужно использовать tarздесь, поскольку его цель - объединить несколько файлов в тарбол. Поскольку у вас есть только один файл, просто используйте gzip.


Я знаю, но я должен сделать это из корневого каталога, потому что я выполняю команду из скрипта.
Черный,

1
Человек, так что просто добавьте cdкоманду раньше tar, затем вы можете вернуться или использовать, cd /mnt/sdb1 && tar -czf new.tar.gz myfile.csv && cd /если вы предпочитаете одну строку cmd.
McSinyx,

@McSinyx Проблема в том, что каталог не сохраняется, даже когда я выполню его, я снова окажусь cd /mnt/sdb1/в корневом каталоге при следующем выполнении команды. Но ваше второе решение выглядит логичным для меня, я пробую.
черный

@MCSinyx СЛАВНЫЙ! Это работает :) Спасибо, это будет ОЧЕНЬ полезно!
черный

@EdwardBlack Вы можете запустить скрипт из любого места, просто добавив соответствующие абсолютные пути. В общем, использование относительных путей - плохая идея, поскольку это может легко сломать вещи.
dr_20.07.15

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.