Ubuntu 16.04
Eu gostaria de fazer backup de todos os arquivos .txt, .cfg e .ini, mantendo sua estrutura de pastas em um arquivo zip na pasta de backups.
Eu sei que há uma maneira mais fácil de fazer toda essa operação, mas é isso que eu tenho.
#!/bin/bash
wdir="/home/files"
backup_dir="/home/files/backup"
allcfg=$(find suan -name '*.cfg')
alltxt=$(find suan -name '*.txt')
allini=$(find suan -name '*.ini')
timeStamp="$(date +%Y--%b-%d--%k:%M--%P)"
backupfilename="${backup_dir}/Backup-${timeStamp}.zip"
#-- set some arrays ...
backupfiles=( "$allcfg" "$alltxt" "$allini" )
cd "$wdir"
zip -r "$backupfilename" "$backupfiles"
Então, eu posso ver uma boa saída dos arquivos que ele arquiva, mas quando chega à parte de compactação, ocorre um erro.
zip error: Nothing to do! (try: zip -r /home/files/backup/Backup-2018--Jul-04--21:37--pm.zip . -i suan/cfg/360controller.cfg
Mas isso também não funciona.
É assim que a
-r
opção recursiva7z
funciona, é uma busca de padrões recursivos.7z
cria arquivos zip muito bem.Você também pode fazer a opção multi-arg
find
se de alguma forma não tiver 7zip,Usando
find
ezip
:Alternativamente, você pode querer deixar seu script
cd
entrar"$wdir"
primeiro e depois usar.
nofind
comando, dependendo de qual caminho você gostaria de salvar no arquivo.Isso encontraria todos os arquivos relevantes e os arquivaria em seu arquivo de backup.
Alternativamente com
bash
, se não houver milhares de arquivos:As opções de shell definidas aqui habilitam o
**
glob (que globs pathnames), faz globs não expandidos expandir para a string vazia e faz com que globs correspondam a arquivos ocultos.