TAR особые приемы

Бэкап файлов с одинаковым именем

Сделать бэкап всех файлов config.xml из папки /home/user/.hudson:

tar cfv /home/user/backup//jenkins_config.tgz `find /home/user/.hudson -name config.xml`

Исключение каталогов

Чтобы исключить определенные каталоги при подготовке архива надо делать так:

tar --exclude='./folder' --exclude='./upload/folder2' cvfj backup.tbz backup/

При этом надо учесть следующее - если указанный каталог содержит только файлы (без вложенных каталогов), то надо указать файлы по маске.
Например, так:

tar --exclude='./upload/folder2/*' cvfj backup.tbz backup/

Другой синтаксис, где можно под одним ключом указать список каталогов:

tar czfz MyBackup.tar.gz --exclude={"/home/user/public_html/tmp","/home/user/public_html/data"} /home/user/public_html/

Бэкап в цикле по списку

#!/bin/bash
PFC="
amavis
courier-authlib
dovecot
httpd2
opendkim
postfix
postfixadmin
postgrey
sasl2
spamassassin
"
DS=$(date +%y%m%d%H%M)

for PF in $PFC; do
   echo $PF
   #tar --append -fpf_set_$DS.tar /etc/$PF
   tar -rPv -fpf_set_$DS.tar /etc/$PF --warning=none
done
gzip pf_set_$DS.tar

Сжимать сразу не получается. Имя файла должно стоять после ключа “-f” без пробела.

Обновление версии tar

Сборка из исходников

wget https://ftp.gnu.org/gnu/tar/tar-1.32.tar.gz
tar -xzf tar-1.32.tar.gz
cd tar-1.32
configure --prefix=/bin/tar1.32 DEFAULT_RMT_DIR=/etc # if there exists a file /etc/rmt
make -j 4 # 4 is number of CPU cores available for You
sudo make install
make clean

Сменить дефолтную версию tar

$ sudo update-alternatives --install /bin/tar tar $HOME/bin/tar1.31/tar 1