TAR особые приемы
Бэкап файлов с одинаковым именем
Сделать бэкап всех файлов config.xml из папки /home/user/.hudson:
Исключение каталогов
Чтобы исключить определенные каталоги при подготовке архива надо делать так:
При этом надо учесть следующее - если указанный каталог содержит только файлы (без вложенных каталогов), то надо указать файлы по маске.
Например, так:
bzip
.
Другой синтаксис, где можно под одним ключом указать список каталогов:
tar cvfz MyBackup.tar.gz --exclude={"/home/user/public_html/tmp","/home/user/public_html/data"} /home/user/public_html/
И, самый надежный по синтаксису, проверенный вариант:
#!/bin/bash
HOST=$(hostname)
sudo rm -f /home/cloud/${HOST}-opt-swift.tgz
sudo tar --create -f /home/cloud/${HOST}-opt-swift.tgz -z \
--exclude={\
'/root/.cache',\
'__pycache__',\
'*node_exporter*',\
'.git',\
'epoch01',\
'/root/ring/epoch15/backups',\
'bigfile',\
'/root/premlogi',\
'/root/mirror',\
'/opt/swift/src/releasenotes'}\
/opt/swift /root
-f
имя файла создаваемого архива,
затем идет перечисление ключей (тип компрессии -z
и прочее), после этого ключ --exclude
и список каталогов,
и, наконец, список каталогов или файлов, которые надо запаковать в архив.
Бэкап в цикле по списку
#!/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
Обновлено: 25.02.2025