Исключить каталог из архива tar

Делал архивацию одного сайта с помощью tar, и потребовалось исключить несколько каталогов (логи, временные файлы и т.п.). Сначала казалось, что все просто: man tar, там нашел параметр --exclude, и вперед! Но это было обманчиво: сначала tar просто игнорировал эту директиву, потом вдруг возникло сообщение о слишком большом количестве аргументов.

Стал разбираться. Оказыавется, мои ошибки были вот в чем:

  1. Параметр --exclude нужно указывать обязательно после имени файла архива, но перед именем каталога, который требуется заархивировать, а я помещал ее в конец.
  2. Если используются символы * или ?, нужно брать их в одинарные апострофы, чтобы они передавались в tar как есть, иначе оболочка пытается подставить вместо них полный список файлов.

В итоге правильная команда должна выглядеть примерно так:

$ tar cvf archive.tar --exclude='logs/*' --exclude='tmp/*' ./