Atualmente estou trabalhando em uma automação para alguma tarefa de backup e quero zipar alguns Jails do FreeBSD com partes montadas. Isso é o que eu tenho até agora:
#!/bin/sh
for f in /mnt/Media/Jails/*;
do
echo "------------------------------------"
[ -d $f ] && cd "$f" && echo Entering into $f and packing stuff together for $(basename $f)
#List mountpoints, then greps only relevant to the current path,then splits first own-mount-path then stripes garbage and adds commandblocks
MOUNTYS=$(mount | grep $(basename $f) | sed -n '1!p' | sed 's/^.* on //'| sed 's/(.*)//' | sed 's/^/-xr\!/')
echo "$MOUNTYS"
/mnt/Media/Jails/JDownloader/usr/local/bin/7z a -t7z -mx9 -xr\!*ports $MOUNTYS /mnt/Graveyard/Workingset/Finalize/$(basename $f).zip "$f"
done;
Tudo está funcionando conforme o esperado, além do uso de MOUNTYS, já que parece não ser analisado corretamente.
------------------------------------
Entering into /mnt/Media/Jails/CloudBackup and packing stuff together for CloudBackup
-xr\!/mnt/Media/Jails/CloudBackup/dev
-xr\!/mnt/Media/Jails/CloudBackup/proc
-xr\!/mnt/Media/Jails/CloudBackup/media/TEMP
-xr\!/mnt/Media/Jails/CloudBackup/media/ToBackup/Backup
-xr\!/mnt/Media/Jails/CloudBackup/media/ToBackup/Dokumente
-xr\!/mnt/Media/Jails/CloudBackup/media/ToBackup/Medien
-xr\!/mnt/Media/Jails/CloudBackup/media/Vaultset
7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=C,Utf16=off,HugeFiles=on,64 bits,4 CPUs x64)
Command Line Error:
Incorrect wildcard type marker
r\!/mnt/Media/Jails/CloudBackup/dev
------------------------------------
Não consigo excluir os pontos de montagem. A exclusão manual de portas está funcionando, então parece ser um problema de sintaxe.
Thx pela sua ajuda pessoal eu resolvi isso agora com a ajuda de shellcheck e a opção -spf adicional para caminhos absolutos.
Tags zfs shell freebsd shell-script 7z