Use o GNU tar no macosx. É baseado na mesma fonte. link
Gostaria de obter somente o backup diferencial de um único diretório, usando as ferramentas cmdline no OSX (para ser executado em um serviço de Integração Contínua)
Basicamente, eu tenho um diretório cheio de coisas (arquivos e subdiretórios com arquivos e subdiretórios, ...) e um trabalho que está adicionando mais coisas a este diretório.
Quando o trabalho estiver concluído, gostaria de extrair todos os novos arquivos adicionados pelo trabalho.
(O trabalho é brew
instalando algum software adicional para /usr/local
; gostaria de extrair todo o software adicional instalado).
No linux, eu usaria GNU-tar
com algo assim:
tar --create --file /dev/null --listed-incremental=data.snar ${BACKUPDIR}
# run the job
...
tar -cz --file backup.tgz --listed-incremental=data.snar ${BACKUPDIR}
Infelizmente, isso está no OSX, portanto, só tenho BSD-tar
, que não tem o sinal --listed-incremental
.
Eu também pensei em usar rsync
, com algo como:
rsync --delete --backup --backup-dir=backup.0 -a ${BACKUPDIR} /tmp/backup/
# run the job
...
rsync --delete --backup --backup-dir=backup.1 -a ${BACKUPDIR} /tmp/backup/
No entanto, isso parece não fazer o que eu esperava: se o trabalho excluir arquivos, eles ficarão no diretório especificado com --backup-dir
, mas eu nunca ver somente os arquivos adicionados pelo trabalho ...
Eu realmente gostaria de ter uma solução que não requer que eu instale qualquer software adicional (incluindo o GNU-tar), já que isso provavelmente interfere no real. diretório de dados que eu gostaria de obter as diferenças para ( /usr/local/
).