Tar каталог для файла в каталоге tar'а

1373
Janus Troelsen

У меня есть точка монтирования, /media/xvdf1которую я использую bindfsдля монтирования /var/lib/jenkins/jobsс пользователем / группой jenkins. Я хочу сделать резервную копию, но у меня недостаточно места на другом разделе. После tarring файл должен быть загружен в S3 с помощью aws s3 cp.

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

Разве не существует способ, позволяющий tar избежать получения собственного вывода?

0

2 ответа на вопрос

2
Eric Renouf

Вы можете использовать, --exclude=patternесли вам нужно, хотя я не уверен, как вы делаете, где вам нужно это сделать.

Запуск следующего:

tar -cf test.tar . 

Я получаю сообщение:

tar: ./test.tar: file is the archive; not dumped 

но, возможно, это просто расширение GNU, хотя моя версия BSD дает аналогичные

tar: ./test.tar: Can't add archive to itself 

Тем не менее, вы могли бы сказать это явно игнорировать это с

tar -cf test.tar --exclude=./test.tar . 
Причина, по которой он не обнаруживает проблему, возможно, из-за монтирования bindfs. Janus Troelsen 7 лет назад 0
1
Zhuoer Dong

Я тоже сталкиваюсь с подобной проблемой.

Это может работать так в примере

tar -cf test.tar . 

Вы запрашиваете tarархивирование ., затем tarсоздаете «пустой» файл test.tarдля хранения контента. Но дело в том, что test.tarэто тоже часть каталога .. Это выглядит как бесконечная рекурсия. Во всяком случае, tarкажется довольно умным и предотвратить это, так как в большинстве случаев это не то, что вы хотите.

Помимо использования --exclude, вы также можете попробовать

tar -cf test.tar ./* 

Таким образом, вы просите tarзаархивировать (почти) все файлы . перед запуском команды, обратите внимание, что test.tarона не включена.