Исключить каталог из архива tar
Делал архивацию одного сайта с помощью tar, и потребовалось исключить несколько каталогов (логи, временные файлы и т.п.). Сначала казалось, что все просто: man tar, там нашел параметр --exclude, и вперед! Но это было обманчиво: сначала tar просто игнорировал эту директиву, потом вдруг возникло сообщение о слишком большом количестве аргументов.
Стал разбираться. Оказыавется, мои ошибки были вот в чем:
- Параметр --exclude нужно указывать обязательно после имени файла архива, но перед именем каталога, который требуется заархивировать, а я помещал ее в конец.
- Если используются символы * или ?, нужно брать их в одинарные апострофы, чтобы они передавались в tar как есть, иначе оболочка пытается подставить вместо них полный список файлов.
В итоге правильная команда должна выглядеть примерно так:
$ tar cvf archive.tar --exclude='logs/*' --exclude='tmp/*' ./