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.

  • directory rsync in modo che tutte le modifiche appaiano atomicamente
  • Escapare spazi in un path remoto quando si utilizza rsync su una connessione remota SSH
  • L'authentication chiave non funziona quando si utilizza ssh o rsync come sudo
  • Perché non è ansible utilizzare due telecomandi per rsync?
  • Come correggere l'errore di pacchetto corrotto per con rsync per (relativamente) grandi file?
  • Perché rsync salta la directory principale?
  • 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.