rsync -a --no-specials --no-devices
diria ao rsync para ignorar esses arquivos. Ele ainda imprimirá uma mensagem informativa, mas retornará 0 se nenhum outro erro ocorrer.
Se houver um conjunto de caminhos conhecidos que você não deseja transferir, você poderá excluí-los completamente. Além disso, passe a opção -x
para ignorar todos os sistemas de arquivos montados (incluindo /dev
, que cuida do maior infrator), e se houver vários sistemas de arquivos em disco, liste todos os pontos de montagem (por exemplo, rsync -ax / /home /destination
) .
rsync -ax --exclude='/var/spool/postfix/dev/*' / /mnt/shared/backup
Se nada disso for satisfatório, faça uma lista dos arquivos que deseja pular . Tenha em atenção que, se alguns dos nomes de ficheiros estiverem sob o controlo de um adversário, poderão fazer com que alguns ficheiros sejam omitidos de uma cópia de segurança. Por exemplo, se eles criarem um diretório cujo nome é uma nova linha e criarem um soquete nomeado chamado *
dentro dele, usar a saída de find -type s
como uma lista de exclusões resultaria na exclusão de /*
. Para evitar esses problemas, mantenha nomes problemáticos fora da lista de exclusão.
{
cd /path/to/source &&
find . -name '*[\[?*
]*' -prune -o \
\( -type b -o -type c -o -type p -o -type s \) -print |
sed 's/^\.//'
} | rsync -a --exclude-from=- /path/to/source /destination