
Привет, ребята, я новичок в 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