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.

  • backup completo o incrementale di un gran numero di file
  • Perché non si utilizza rsync solo per eseguire il backup degli ospiti vmware?
  • Come get rsync per spostare file da sorgente a destinazione?
  • script bash restituisce "fuori memory" in cron, ma non in shell
  • rsync per il backup considerato pericoloso?
  • Sincronizza in avanti su HDFS? (O continuare un caricamento incompleto di hdfs?)
  • 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.