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