Как я использую tar для исключения всех файлов определенного каталога?

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

Используя Ubuntu 16 и tar 1.28, мы попробовали:

tar -vczf archive.tar.gz . --exclude=wp-content/uploads/wpallimport/files/*
tar: Cowardly refusing to create an empty archive

Мы также попытались включить, исключают = параметр в единственных и двойных цитатах, никакой удаче.

tar -vczf archive.tar.gz . --exclude='wp-content/uploads/wpallimport/files/*'
tar: Cowardly refusing to create an empty archive

Шоу официального сайта - исключают без, равняется знаку

tar -vczf file.tar.gz --exclude 'directory/*' . и дает ту же ошибку.

Как это сделано?

7
задан 11 August 2016 в 12:30

3 ответа

Обычный глюк с tar --exclude опция состоит в том, что это относительно аргумента каталога , например, учитывая

$ tree dir
dir
└── subdir
    └── subsubdir
        ├── file1
        ├── file2
        └── file3

2 directories, 3 files

затем

$ tar cvf dir.tar.gz --exclude='/dir/subdir/subsubdir/*' dir
dir/
dir/subdir/
dir/subdir/subsubdir/
dir/subdir/subsubdir/file1
dir/subdir/subsubdir/file2
dir/subdir/subsubdir/file3

сбои для исключения содержания subsubdir (это пытается исключить dir/dir/subdir/subsubdir/*, который ничему не соответствует); то, что Вы хотите,

$ tar cvf dir.tar.gz --exclude='subdir/subsubdir/*' dir
dir/
dir/subdir/
dir/subdir/subsubdir/

AFAIK, порядок не имеет значения за исключением того, что выходной файл должен сразу следовать f опция.

12
ответ дан 23 November 2019 в 06:16

Скажем, у Вас есть каталог, названный "главным dir" с подпапками "dir/subdir". Если Вы хотите исключить содержание каталога "dir/subdir", но не самого каталога, командная строка, которая на самом деле работает, tar -zcp --exclude='dir/subdir/*' -f archive.tgz top-dir.

Необходимо использовать -f переключатель после --exclude один и перед именем архивного файла.

2
ответ дан 23 November 2019 в 06:16

Случай успеха:

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

     tar -zcvf /opt/ABC/BKP_27032020/backup_27032020.tar.gz --exclude = '/ opt / ABC / csv / *' --exclude = '/ opt / ABC / log / *' / opt / ABC
    
  2. Если задан текущий путь для создания резервной копии, в исключении также должен использоваться только текущий путь.

     tar -zcvf backup_27032020.tar.gz --exclude = 'ABC / csv / *' --exclude = 'ABC / log / *' ABC
    

Случай сбоя:

  1. Если указать каталог currentpath для резервного копирования и полный путь для игнорирования, то это не сработает

     tar -zcvf /opt/ABC/BKP_27032020/backup_27032020.tar.gz --exclude = '/ opt / ABC / csv / *' --exclude = '/ opt / ABC / log / *' ABC
    

Примечание: упоминание об исключении до / после каталога резервного копирования - это нормально.

2
ответ дан 26 March 2020 в 21:56

Другие вопросы по тегам:

Похожие вопросы: