GNU/Linux >> Linux Esercitazione >  >> Linux

5 suggerimenti avanzati di rsync per gli amministratori di sistema Linux

In un articolo precedente intitolato Strumenti di amministratore di sistema:utilizzo di rsync per gestire il backup, il ripristino e la sincronizzazione dei file, ho discusso di cp e sftp e ha esaminato le basi di rsync per spostare i file. Ci sono anche un paio di altri ottimi articoli qui su Enable Sysadmin su tar e SSH a cui dovresti dare un'occhiata. Copiare file da e verso sistemi remoti e avere un modo semplice per eseguire un backup di qualcosa su cui stai lavorando (o, se è per questo, dati aziendali critici) sono strumenti utili di base nella casella degli strumenti di sysadmin che uso ancora e ancora. A volte, tuttavia, potresti voler fare qualcosa di un po' più sofisticato, come spostare i dati su un collegamento meno affidabile o più lento. Rsync può fornire crittografia per proteggerlo in transito, compressione per renderlo migliore e checksum per assicurarti di ottenere ciò che ti aspettavi.

[ Ai lettori è piaciuto anche: Come copiare in modo sicuro i file tra host Linux utilizzando SCP e SFTP ]

Mantenimento di un sito web

Ho iniziato a usare rsync per sincronizzare una versione locale di un sito web che gestivo nei secoli bui, quando CI/CD era solo un lampo negli occhi di suo padre. Potrei mantenere una copia locale su cui lavorare e anche avere un backup dell'ultima versione del sito. Userò quello scenario come mio esempio. Puoi usare rsync per sincronizzare qualsiasi filesystem remoto per i backup o come modo rapido per creare una pipeline dal test alla produzione. L'ho anche usato per sincronizzare una directory e poi ho usato tar per creare backup locali:

skipworthy  ~  enable  websync  ls -al
total 8
drwxrwxr-x 2 skipworthy skipworthy 4096 Dec 16 13:57 .
drwxrwxr-x 5 skipworthy skipworthy 4096 Dec 16 14:01 ..
 skipworthy  ~  enable  websync  rsync -aruv 192.168.11.111:/usr/share/httpd/enable ./
receiving incremental file list
enable/
enable/bar
enable/foo
enable/index

sent 85 bytes  received 229 bytes  209.33 bytes/sec
total size is 0  speedup is 0.00
skipworthy  ~  enable  websync  ls -l
total 4
dr-xr-xr-x 2 skipworthy skipworthy 4096 Dec 16 13:49 enable

Come prima con il rsync locale , stiamo eseguendo in modalità archivio, preservando mtime e attributi di file, ricorrendo nelle sottodirectory e aggiornando solo i dati nuovi o modificati.

Nota :-v quasi sempre significa prolisso , inviando l'output alla console.

Quindi diciamo che volevo aggiungere una pagina al sito e caricarla:

skipworthy  ~  enable  websync  rsync -aruv ./* 192.168.11.111:/usr/share/httpd/enable
sending incremental file list
pagetwo
rsync: recv_generator: mkdir "/usr/share/httpd/enable/enable" failed: Permission denied (13)

Questo è un buon momento per notare che ci sono alcune cose a cui devi pensare quando usi rsync per inviare file. Rsync necessita dell'autorizzazione per l'intero albero delle directory, non solo per la directory di destinazione. Ci sono diversi modi in cui puoi farlo. Per uno, è possibile specificare l'uid e gid del rsync demone in /etc/rsyncd.conf . Un altro modo è eseguire rsync come utente con le autorizzazioni richieste. Entrambi possono essere problematici in un ambiente sicuro, quindi procedi con attenzione qui.

Inoltre, tieni presente che per impostazione predefinita, quando usi rsync da remoto, ti stai connettendo direttamente a rsync servizio sulla porta 873 . Devi pensarci quando imposti le regole e le autorizzazioni del firewall. Inoltre, ci sono i permessi di SELinux, che sono tutta un'altra discussione e non rientrano nell'ambito di questo articolo. Una soluzione al problema delle autorizzazioni di directory e ai problemi di sicurezza, in generale, consiste nell'usare SSH (questo dovrebbe suonare familiare ormai). SSH configura un tunnel crittografato e può essere impostato per l'ascolto su qualsiasi porta, senza contare che puoi specificare una chiave SSH per proteggere ulteriormente la connessione e rendere le connessioni remote un po' più facili da automatizzare.

Funzioni avanzate

Per questo prossimo esempio, inserirò queste modifiche come root. Per favore, non essere come me:

rsync -aruv -e ssh  ./* [email protected]:/usr/share/httpd/enable
[email protected]'s password:
sending incremental file list
pagetwo

sent 246 bytes  received 36 bytes  43.38 bytes/sec
total size is 31  speedup is 0.11

Si noti ancora che le solite opzioni SSH sono disponibili per le connessioni, inclusa la specifica della porta e della posizione della chiave. Rsync ti consente anche di selezionare l'opzione della shell remota, purché sia ​​installata su entrambe le estremità e configurata in .ssh/config .

Checksum

Ho menzionato i checksum in precedenza e ci sono due cose potenzialmente utili qui. Innanzitutto, rsync esegue un checksum per impostazione predefinita e quindi lo verifica sul target, che ti avviserà sulla remota possibilità che i dati vengano persi o danneggiati durante il volo.

In secondo luogo, puoi anche utilizzare i checksum per determinare quali file trasferire (ad esempio, quali file sono effettivamente diversi tra sorgente e destinazione), utile se non sei sicuro che sia il mtime /tempo rappresenta la versione effettiva del file che desideri. Ho avuto filesystem che stavo cercando di sincronizzare che venivano toccati da un'altra app, quindi i tempi non erano corretti.

skipworthy  ~  enable  websync  rsync -aruv -e ssh --checksum 192.168.11.111:/usr/share/httpd/enable ./
receiving incremental file list

sent 26 bytes  received 364 bytes  780.00 bytes/sec

Nota :Ciò comporta un sovraccarico aggiuntivo nell'elaborazione e nel trasferimento poiché viene generato un checksum per ciascun file su ciascun lato e quindi confrontato.

Compressione

Un altro trucco utile è la compressione. Il -z l'opzione comprimerà lo stream, --zc imposta il tipo di compressione e --zl imposta il livello:

skipworthy  ~  enable  websync  rsync -aruv -e ssh --zc=zlib --zl=6 192.168.11.111:/usr/share/httpd/enable ./
receiving incremental file list

sent 26 bytes  received 248 bytes  548.00 bytes/sec
total size is 31  speedup is 0.11

Se non specifichi il tipo o il livello, rsync utilizza un elenco fornito in RSYNC_COMPRESS_LIST variabile di ambiente per negoziare un tipo e un livello di compressione comuni.

[ Cerchi ulteriori informazioni sull'automazione dei sistemi? Inizia con The Automated Enterprise, un libro gratuito di Red Hat. ] 

Concludi

Quindi il gioco è fatto:rsync è ancora un altro di quegli strumenti che è ancora utile e rilevante per l'amministrazione dei sistemi Linux, uno strumento che sono stato felice di avere molte volte nella mia carriera. Ci sono molte, molte altre cose che puoi fare con esso che non abbiamo spazio per esplorare qui:come sempre, controlla le pagine man!


Linux
  1. Suggerimenti Linux per l'utilizzo di cron per pianificare le attività

  2. Come utilizzare Advanced rsync per backup Linux di grandi dimensioni

  3. 8 suggerimenti per un'automazione affidabile del sistema Linux

  4. 3 solidi suggerimenti per l'autovalutazione per gli amministratori di sistema

  5. 80 strumenti di monitoraggio Linux per SysAdmins

Suggerimenti per l'utilizzo del comando top in Linux

Esempi di comandi Linux Rsync per principianti

Guida rapida ad Ansible per amministratori di sistema Linux

30 Esercizi sulle autorizzazioni Linux per amministratori di sistema

40 utili comandi di rete Linux per i moderni amministratori di sistema

Utilità di backup Linux per backup incrementali