Клиент загружает файлы на сервер разработки. Когда пора загрузить проект на рабочий сервер, те файлы больше не необходимы, и мы хотели бы исключить их из файла 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/*' .
и дает ту же ошибку.
Как это сделано?
Обычный глюк с 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
опция.
Скажем, у Вас есть каталог, названный "главным dir" с подпапками "dir/subdir". Если Вы хотите исключить содержание каталога "dir/subdir", но не самого каталога, командная строка, которая на самом деле работает, tar -zcp --exclude='dir/subdir/*' -f archive.tgz top-dir
.
Необходимо использовать -f
переключатель после --exclude
один и перед именем архивного файла.
Случай успеха:
Если указан полный путь для резервного копирования, в исключении также должен использоваться полный путь.
tar -zcvf /opt/ABC/BKP_27032020/backup_27032020.tar.gz --exclude = '/ opt / ABC / csv / *' --exclude = '/ opt / ABC / log / *' / opt / ABC
Если задан текущий путь для создания резервной копии, в исключении также должен использоваться только текущий путь.
tar -zcvf backup_27032020.tar.gz --exclude = 'ABC / csv / *' --exclude = 'ABC / log / *' ABC
Случай сбоя:
Если указать каталог currentpath для резервного копирования и полный путь для игнорирования, то это не сработает
tar -zcvf /opt/ABC/BKP_27032020/backup_27032020.tar.gz --exclude = '/ opt / ABC / csv / *' --exclude = '/ opt / ABC / log / *' ABC
Примечание: упоминание об исключении до / после каталога резервного копирования - это нормально.