Как создать tar-файл в определенной папке из другой папки

Как создать tar-файл в определенной папке из другой папки

Привет, ребята, я новичок в Linux.

Я пытаюсь создать tar-файл из другого каталога и хочу, чтобы он был помещен в определенный каталог.

Я пробовал этот cmd

tar -cvf dailybackup.tar /root/filesfromlocalmachine/ -C /root/backup/

В имени pf backup есть папка, и я хочу, чтобы tar был создан там. Но всякий раз, когда я это выполняю, tar создается в папке, где я выполняю команду. Есть ли способ создать файл tar из другой папки.

решение1

Да, укажите каталог перед «tar».

cd /
tar -cvf /where/to/put/it/dailybackup.tar root/backup/

и он будет делать резервную копию root/backup.

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

решение2

Всякий раз, когда tarвстречается -Cопция, текущий рабочий каталог изменяется, все последующие опции, которые следуют за ней, затрагиваются. Это делает эту опцию чувствительной к порядку.

./a:      ./b:
file001   file002

например, использование нескольких -Cвариантов делает второй вариант -Cотносительным к первому.

$ tar -vcf archive.tar.gz -C ./a . -C ../b .  
./  
./file001  
./  
./file002

Поскольку -Cне корректирует запись [ФАЙЛ...],расширение пути(... подстановка) не будет работать. Однако в случаях, когда подстановка необходима, --transformможет использоваться.

$ tar -cvf archive.tar.gz \
    --show-transformed-names --transform='s:^./.*/::' ./[ab]/file00?
file001
file002

также '--strip-components=<n>'может использоваться для снятия ведущих компонентов при извлечении.

$ tar -vxf archive.tar.gz \
    --show-transformed-names --strip-components=2  
file001  
file002

Связанный контент