Complesso include / esclude con rsync

Sto cercando di elaborare la syntax del filter rsync per eseguire complessi includere / escludere e cercare di get quanto segue:

Include / Exclude /home Include /home/user1/* Include /home/user2/subdir/* 

Ho provato molte variazioni sulla syntax del filter, e nonostante la lettura di molte pagine della pagina man, non posso get questo tipo di effetto. I filtri Rsync sembrano essere molto potenti e mi sembra difficile credere che non possano gestire uno scenario comune come questo.

  • Come copiare la directory da un server Linux ad un altro con un minimo di intervallo?
  • rsync - escludere tutte le directory tranne alcune
  • Rsync sembra incompatibile con .bashrc (cause "è il tuo guscio pulito?")
  • Remote to Remote File Sync senza connettività di networking diretta tra i server remoti
  • Esegui il command rsync su ssh con un agente ssh tramite crontab
  • Accelerare il rsync eseguendo più istanze contemporaneamente?
  • 2 Solutions collect form web for “Complesso include / esclude con rsync”

    Devi includere tutte le directory padre fino alla directory desiderata prima di utilizzare la regola di esclusione.

    Ad esempio, utilizzo quanto segue in uno script di backup:

     rsync -av \ --filter='+ /var/' \ --filter='+ /var/backups/' \ --filter='- /var/*' \ / \ $DEST 

    Quindi nel tuo caso avresti bisogno di qualcosa di simile al seguente:

     rsync -av \ --filter='+ /home/' \ --filter='+ /home/user1/' \ --filter='+ /home/user2/' \ --filter='+ /home/user2/subdir/' \ --filter='- /home/user2/*' \ --filter='- /home/*' \ / \ $DEST 

    Sulla row di command:

     rsync --dry-run --verbose --recursive --include=/home/user1 --exclude=/home/* / DEST 

    Rimuovi --dry-run per renderlo funzionale, sostituisci "DEST" con la tua destinazione e aggiunge utente e host alla fonte "/" se necessario.

    Da un file di regole:

     rsync --dry-run --verbose --recursive --filter='merge /etc/rsync/somerules.rules' / DEST 

    where il contenuto di /etc/rsync/somerules.rules potrebbe essere:

     +/ /home/user1 -/ /home/* 

    Dovresti testare questi e potrebbe essere necessario effettuare alcune correzioni, ma questo dovrebbe farti iniziare.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.