rsync è un'utilità da riga di comando open source, progettata come sostituto di rcp (e scp), ma con molte altre funzionalità. Utilizza l'algoritmo "rsync", che fornisce un metodo molto veloce per la sincronizzazione dei file remoti.
Il progetto rsync fa il suo lavoro inviando solo le differenze tra i file attraverso il link, senza richiedere che entrambi i gruppi di file siano presenti in una delle estremità del collegamento in anticipo.
Con rsync, gli utenti saranno in grado di aggiornare interi file system e alberi di directory, possono usare SSH, RSH o socket diretti come supporto per il trasporto, il mirroring tramite rsync anonimo e, facoltativamente, preservare collegamenti simbolici, proprietà dei file, collegamenti fisici, permessi, orari e dispositivi.
rsync non richiede privilegi speciali per l'installazione e la sua funzionalità di pipeline interna riduce la latenza per più file.
Novità in questa versione:
- Questa è una versione di bug-fix. Include una correzione di sicurezza per un trasferimento da un mittente di cui non ti fidi completamente.
Novità della versione nella versione:
- Questa è una versione di bug-fix. Include una correzione di sicurezza per un trasferimento da un mittente di cui non ti fidi completamente.
Novità nella versione 3.1.0:
- MODIFICHE DI OUTPUT:
- Numeri di output in gruppi di 3 cifre per impostazione predefinita (ad esempio, 1234.567). Vedi l'opzione --human-readable per un modo per disattivarlo. Vedi anche il formato & quot; log del demone & quot; parametro e relative opzioni della riga di comando (incluso --out-format) per un modificatore che può essere utilizzato per richiedere il raggruppamento di cifre o l'output leggibile dall'utente nei log escape. (Nota che l'output del registro è invariato per impostazione predefinita.)
- L'opzione --list-only è ora influenzata dall'impostazione --human-readable. Visualizzerà i raggruppamenti delle cifre per impostazione predefinita e i suffissi unitari se vengono richiesti livelli più elevati di leggibilità. Inoltre, la larghezza della colonna per l'output della dimensione è aumentata da 11 a 14 caratteri quando è abilitata la leggibilità umana. Usa --no-h per ottenere l'output vecchio stile e la dimensione della colonna.
- L'output dell'opzione --progress è cambiato: la stringa & quot; xfer & quot; è stato abbreviato in & quot; xfr & quot ;, e la stringa & quot; to-check & quot; è stato abbreviato in & quot; to-chk & quot ;, entrambi progettati per lasciare spazio alla visualizzazione (di default) più ampia dei numeri delle dimensioni del file senza allungare la lunghezza della linea totale. Inoltre, quando la ricorsione incrementale è abilitata, la stringa & quot; ir-chk & quot; verrà utilizzato al posto di & quot; to-chk & quot; fino a quando non viene eseguita la scansione di ricorsione incrementale, facendo sapere che il valore da controllare e il valore totale aumenteranno man mano che vengono trovati nuovi file.
- Miglioramento dell'output di --stats: 1) per menzionare quanti file sono stati creati (protocol & gt; = 28), 2) per menzionare quanti file sono stati cancellati (una nuova riga per il protocollo 31, ma solo l'output quando - delete è in effetti) e 3) per seguire il conteggio dei file, il conteggio creato e il conteggio cancellato con un elenco di conteggio secondario che mostra i conteggi per tipo. Anche la formulazione del conteggio trasferito è cambiata in modo che sia più chiaro che si tratta solo di un numero di file regolari.
- BUG FIXES:
- Risolto un bug nel codice iconv quando EINVAL o EILSEQ venivano restituiti con un buffer di output completo.
- Corretti alcuni bug rari nell'elaborazione --iconv che potevano causare un traduzione errata di un carattere multibyte.
- Risolto un falso & quot; file sparito & quot; errore se alcuni file sono stati specificati con & quot; ./& quot; prefissi e altri no.
- Corretto un bug in --sparse dove un ulteriore spazio poteva essere inserito dopo una scrittura parziale.
- Modificato il modo in cui --progress sovrascrive il suo output precedente al fine di rendere quasi impossibile che il progresso venga sovrascritto da un errore.
- Migliorata la propagazione dei messaggi di errore di uscita anormale. Ciò dovrebbe aiutare il client a ricevere errori dal server quando sta uscendo in modo anomalo e dovrebbe anche evitare di morire con una connessione & quot; inaspettatamente chiusa & quot; uscita quando la connessione chiusa è realmente prevista.
- Ora il mittente controlla ogni file che intende rimuovere per assicurarsi che non sia cambiato dalle informazioni della prima statistica. Ciò aiuta a evitare di perdere i dati dei file quando l'utente non utilizza l'opzione in modo sicuro.
- Risolto un bug di duplicazione dei dati nell'opzione di compressione che rendeva meno efficiente la compressione. Ciò migliora il protocollo 31 in poi, mentre si comporta in modo compatibile (buggy) con i vecchi protocolli rsync.
- Quando si crea un file temporaneo, rsync ora è un po 'più intelligente sulle scelte dot-char, che possono risolvere un problema su OS X con nomi che iniziano con & quot; .. & quot;.
- Rsync ora imposta un flag di pulitura per --inplace e --append trasferimenti che svuoteranno il buffer di scrittura se il trasferimento si interrompe. Ciò garantisce che più dati ricevuti vengano scritti sul disco su un trasferimento interrotto (che è piuttosto utile per una connessione lenta e instabile).
- La legge che map_ptr () ora è allineata sui limiti di 1K. Questo aiuta alcuni filesystem e / o file che non amano le letture non allineate.
- Risolve un problema nella funzione msleep () se il tempo salta indietro.
- Correggere il bug di divisione nome-server daemon-server in cui un argomento viene diviso anche se è stato usato --protect-args.
- miglioramenti:
- Aggiunta l'opzione della riga di comando --remote-option = OPT (-M OPT) che è utile per cose come l'invio di un file remoto --log-file = FILE o --fake-super.
- Aggiunte le opzioni --info = FLAGS e --debug = FLAGS per consentire un controllo a grana fine su ciò che viene prodotto. Aggiunto un extra tipo di output --progress usando --info = progress2.
- L'opzione --msgs2stderr può aiutare con il debug di rsync consentendo ai messaggi di debug di ottenere output su stderr piuttosto che viaggiare tramite il protocollo socket.
- Aggiunte le opzioni --delete-missing-args e --ignore-missing-args per eliminare o ignorare i file specificati dall'utente sul ricevitore che mancano sul mittente (normalmente l'assenza di file specificati dall'utente genera un errore).
- Aggiunto un & quot; T & quot; (terabyte) della categoria ai suffissi di dimensione leggibile -human.
- Aggiunte le opzioni --usermap / - groupmap / - chown per manipolare la proprietà dei file durante la copia.
- Aggiunto il & quot;% C & quot; sfuggire alla gestione dell'output del log, che emetterà il checksum MD5 di qualsiasi file trasferito, o tutti i file se è stato specificato --checksum (quando è attivo il protocollo 30 o successivo).
- Aggiunta della & quot; ricerca inversa & quot; parametro per il file di configurazione del daemon rsync per consentire la disabilitazione delle ricerche DNS inverse.
- Aggiunta una ricerca forward-DNS per gli host del daemon allow / deny config. Può essere disattivato tramite & quot; ricerca diretta & quot; parametro (il valore predefinito è abilitato).
- Aggiunto un modo per specificare più di un gruppo nel file di configurazione del daemon, incluso un modo per specificare che si desidera che tutti i gruppi di utenti specificati non debbano chiamarli. Inoltre, ha modificato il demone per lamentarsi dell'incapacità di impostare valori uid / gid esplicitamente specificati, anche quando non sono stati eseguiti da un superutente.
- Il demone ora tenta di inviare all'utente i messaggi di errore dallo script exec pre-xfer quando fallisce.
- Miglioramento dell'uso delle opzioni alt-dest in una gerarchia di file esistente: se una corrispondenza viene trovata in una directory alt, ha la precedenza su un file esistente. (Dovremo attendere una versione futura prima che le modifiche agli attributi su file altrimenti inalterati siano sicuri quando si utilizza una gerarchia esistente.)
- Sono state aggiunte le opzioni di autorizzazione per utente e il supporto per l'autorizzazione di gruppo agli & quot; auth users & quot; parametro.
- Aggiunto un modo per fare riferimento alle variabili d'ambiente nel file di configurazione di un daemon (utilizzando i riferimenti% VAR%).
- Quando si sostituisce un non-dir con un link simbolico / hard-link / dispositivo / file speciale, l'aggiornamento dovrebbe ora essere eseguito in modo atomico.
- Evita di inviare nuovamente xattr informazioni per file hard-linked con gli stessi xattr (protocollo 31).
- Il codice di backup è stato migliorato per utilizzare una logica migliore mantenendo la gerarchia delle directory di backup. Inoltre, quando viene eseguito il backup di un file, rsync prova a collegarlo in modo fisso in modo che la prossima sostituzione del file di destinazione sia atomica (per la normale logica non-inplace).
- Aggiunta la possibilità di sincronizzare i tempi modificati nano-secondi.
- Aggiunti altri suffissi predefiniti per & quot; non comprimere & quot; impostazioni.
- Aggiunta la verifica della variabile di ambiente RSYNC_PROTECT_ARGS per consentire l'impostazione predefinita dell'opzione della riga di comando --protect-args.
- Aggiunta l'opzione della riga di comando --preallocate.
- Permetti --password-file = - per leggere la password da stdin (nome file & quot; - & quot;).
- Rsync ora viene fornito con uno script helper rsync-ssl che può essere usato per contattare un demone rsync remoto usando un comando piped-stunnel. Include anche un file di configurazione stunnel per eseguire il lato server per supportare le connessioni del daemon ssl. Vedere il pacchetto packaging / lsb / rsync.spec per un modo per comprimere i file risultanti. (I suggerimenti su come rendere ancora più semplice l'installazione e l'utilizzo sono i benvenuti.)
- Migliorata la velocità di alcuni aggiornamenti interni quando ci sono molti blocchi identici di checksum che diventano inutilizzabili.
- Aggiunta l'opzione --outbuf = N | L | B per la scelta del buffer di output.
- La ripetizione dell'opzione --fuzzy ora fa sì che il codice cerchi corrispondenze sfocate anche all'interno delle directory alt-dest.
- L'opzione --chmod ora supporta modalità numeriche, ad es. --chmod = 644, D755
- Aggiunto un po 'di codice xattr di Solaris.
- Creato un daemon rsync (il processo di ascolto), esce con uno stato 0 quando è stato segnalato che è morto. Questo aiuta launchd.
- Miglioramento delle variabili di ambiente RSYNC_ * per lo script exec pre-xfer: quando un daemon viene inviato più richieste args, vengono ora unite in un unico valore di ritorno (separato da spazi) in modo che la variabile di ambiente RSYNC_REQUEST sia accurata per qualsiasi & quot; pre-xfer exec & quot ;. I valori in VRS RSYNC_ARG # non vengono più troncati in & quot;. & Quot; arg (prima della richiesta dirs / files), in modo che tutti i valori richiesti siano anche elencati (separatamente) nelle variabili RSYNC_ARG #.
- EXTRA:
- Aggiunto un & quot; instant-rsyncd & quot; script nella directory di supporto, che semplifica la configurazione di un semplice daemon rsync nella directory corrente.
- Aggiunto il & quot; mapfrom & quot; e & quot; mapto & quot; script per la directory di supporto, che semplifica il mapping di utenti / gruppi in un trasferimento locale basato su file passwd / group da un'altra macchina.
- C'è una nuova versione migliorata dello script lsh nella directory di supporto: è scritta in perl e supporta -u senza ricorrere all'uso di sudo (quando viene eseguito come root). La vecchia versione della shell ora si chiama lsh.sh.
- C'è uno script di aiuto chiamato rsync-slash-strip nella directory di supporto per chiunque voglia cambiare il modo in cui rsync gestisce gli argomenti con barre finali. (ad esempio, arg / verrebbe sottoposto a stripping in arg mentre arg /. si trasformerebbe in arg /).
- INTERNO:
- Il codice I / O è stato riscritto per essere più semplice e fare letture buffer più grandi sul socket. L'I / O tra il ricevitore e il generatore è stato modificato in I / O multiplexed standard (come quello sul socket).
- Il mittente tenta di utilizzare qualsiasi tempo morto mentre il generatore cerca i file da trasferire per eseguire la scansione delle directory lato mittente in modo più parallelo.
- Un daemon può ora informare un client su un valore di timeout configurato da un demone in modo che il client possa aiutare nell'attività keep-alive (protocollo 31).
- Il codice del filtro ha ricevuto alcuni refactoring per renderlo più estensibile, per leggere meglio e per migliorare il controllo di integrità.
- I numeri veramente grandi vengono ora pubblicati utilizzando la nostra routine big-num piuttosto che convertendoli in un double e utilizzando una conversione% .0f.
- La libreria pool_alloc ha ricevuto alcuni piccoli miglioramenti nella gestione degli allineamenti.
- Aggiunta la funzione init_stat_x () per evitare la duplicazione del codice init acl / xattr.
- Lo zlib incluso è stato aggiornato dalla 1.2.3 alla 1.2.8.
- Ora Rsync può essere compilato per usare una libreria zlib non modificata invece di quella modificata che è inclusa con rsync. Questo alla fine diventerà il default, a quel punto inizieremo il conto alla rovescia per rimuovere lo zlib incluso. Fino ad allora, sentiti libero di configurare usando:
- ./ configure --with-included-zlib = no
- SVILUPPATORE COLLEGATO:
- Aggiunto più output di debug condizionale.
- Risolti alcuni problemi di build per android e minix.
Novità nella versione 3.0.9 Pre1:
- Correzione di un bug di crash nella scansione del checksum quando si usa --inplace.
- Correzione della conservazione degli xattr di sistema di un collegamento simbolico (ad es. selinux) su Linux.
- Risolve un bug con la modifica delle directory non scrivibili.
- Correzione dell'interazione di --fake-super con --link-dest comparazioni tra file.
- Correggere l'aggiornamento del buffer curr_dir per evitare una barra doppia.
- Rendi gli errori dei file esclusi dai demoni più simili a errori.
- Risolvi alcuni problemi con la post-elaborazione delle pagine man.
Novità nella versione 3.0.8 Pre1:
- BUG FIXES:
- Risolti due problemi di overflow del buffer: uno in cui un percorso di directory che è esattamente MAXPATHLEN non era gestito correttamente e uno che gestiva una directory --backup che è extra extra large.
- Risolto un problema di corruzione dei dati durante la conservazione dei collegamenti fisici senza preservare la proprietà dei file e l'eliminazione di prima o durante il trasferimento. Questo risolve alcuni errori di asserzione nel codice hard-linking e alcuni potenziali checksum non riusciti (via -c) che avrebbero dovuto corrispondere.
- Risolto un potenziale arresto anomalo quando un daemon rsync ha un elenco filtro / esclusione e il trasferimento utilizza ACL o xattr.
- Corretto un blocco se un file molto grande veniva elaborato da un rsync che non può gestire numeri a 64 bit. Rsync ora si lamenterà del fatto che il file sia troppo grande e lo salti.
- Per dispositivi e file speciali, ora evitiamo di raccogliere informazioni ACL e / o xattr inutili per i file che non vengono copiati. (I file non copiati sono ancora inseriti nell'elenco dei file, ma non è necessario raccogliere i dati che non verranno utilizzati.) Ciò garantisce che se l'utente utilizza --no-D, tale rsync non può reclamare sull'essere incapace di raccogliere informazioni estese da file speciali che sono nella lista dei file (ma non nel trasferimento).
- Gestire correttamente i nomi di file remoti richiesti che iniziano con un trattino. Ciò evita un potenziale errore in cui un nome di file può essere interpretato come un'opzione (solitamente non valida).
- Corretto un bug nel confronto delle lettere maiuscole nei suffissi file per --skip-compress.
- Se un daemon rsync ha un modulo configurato senza un'impostazione di percorso, rsync ora disabiliterà l'accesso a quel modulo.
- Se l'argomento di destinazione è una stringa vuota, verrà considerato come riferimento alla directory corrente (come 2.x usato per fare).
- Se rsync è stato compilato con una funzione di impostazione dell'ora più recente (ad esempio lutimes), rsync ricadrà su una funzione precedente (come utimes) su un sistema in cui la funzione più recente non è in giro. Questo aiuta a rendere il binario rsync più portabile in situazioni di rilascio con sistema operativo misto.
- Corretto un errore di scrittura del file batch che non scriveva il set completo di flag di compatibilità utilizzati dal trasferimento. Questo risolve un potenziale problema di protocollo per un file batch che contiene un errore I / O lato mittente: sarebbe stato inviato in un modo che il lettore non si aspettava.
- Alcuni miglioramenti al codice di collegamento permanente per garantire che l'hashing del numero di dispositivo funzioni correttamente e per fornire ulteriori informazioni in caso di errore del codice del collegamento reale.
- Il codice --inplace è stato migliorato per non cercare una posizione di checksum impossibile. Il messaggio quadruplo-verbose [N] indica ora quando un chunk inplace è gestito da una ricerca piuttosto che da una lettura + scrittura.
- Se non riusciamo a connetterci a un demone rsync, segnala tutti gli errori di connessione (ad esempio IPv4 e IPv6), non solo l'ultimo.
- Gestione della maschera ACL migliorata, ad es. per Solaris.
- Risolto un problema in cui un trasferimento xattr e / o ACL che utilizzava l'opzione alt-dest (es. --link-dest) poteva generare un errore nel tentativo di dettagliare le modifiche rispetto alle informazioni xattr / ACL della directory alt-dest, ma era cercando invece di accedere alla nuova directory di destinazione non ancora esistente.
- Migliorato i messaggi di errore del sistema xattr per menzionare il percorso completo del file.
- Il controllo -link-dest per i collegamenti simbolici identici ora evita di considerare le differenze degli attributi che non possono essere cambiate sul ricevitore.
- Evita di provare a leggere / scrivere xattr su determinati tipi di file per determinati sistemi operativi. Configurazione migliorata per impostare NO_SYMLINK_XATTRS, NO_DEVICE_XATTRS e / o NO_SPECIAL_XATTRS in config.h.
- Migliorato i messaggi di errori di symlink non sicuri.
- Risolto un bug che fissa xattrs su nuovi file che non sono scrivibili dall'utente.
- Corretto un bug con --fake-super durante la copia di file e directory che non sono scrivibili dall'utente.
- Corretto un bug in cui un file sparse poteva avere il suo ultimo blocco sparso trasformato in un blocco reale quando rsync imposta la dimensione del file (richiede ftruncate).
- Se il nome di un file temporaneo è troppo lungo, rsync ora evita di troncare il nome nel mezzo di caratteri ad alto bit adiacenti. Ciò impedisce un potenziale errore di nome file se il filesystem non consente a un nome di contenere una sequenza multibyte non valida.
- Se una connessione socket del protocollo muli non riesce (ad esempio, quando si contatta un demone), ora riportiamo tutti i guasti, non solo l'ultimo. Ciò evita di perdere un errore rilevante (ad esempio un errore di connessione respinta IPv4) che si è verificato prima dell'errore finale (ad esempio un errore di protocollo IPv6 non supportato).
- Genera un errore di trasferimento se proviamo a chiamare chown con -1 per un uid o un gid (che non è impostabile).
- Risolto un errore di eliminazione di un file con --one-file-system.
- Correggere l'analisi popt in modo che un'opzione che non accetta un arg rifiuta un tentativo di fornirne uno.
- Un paio di piccole modifiche all'opzione per supportare lo script / rrsync e anche alcune modifiche regex che rendono più felice l'evidenziazione di vim.
- Risolti alcuni problemi nello script support / mnt-excl.
- Alcuni miglioramenti della pagina man.
- miglioramenti:
- Aggiunti & quot; .hg / & quot; al default cvs esclude (vedi -C & --cvs-exclude).
- SVILUPPATORE COLLEGATO:
- Usa lchmod () ogni volta che è disponibile (non solo su symlink).
- Un paio di correzioni alla routine socketpair_tcp ().
- Aggiornati gli script di aiuto nella sottodirectory della confezione.
- Rinominato configure.in per configure.ac.
Novità nella versione 3.0.6:
- Corretto un blocco --read-batch quando rsync stava leggendo un file batch creato da un trasferimento incrementale-ricorsione.
- Risolto il codice socket del daemon per gestire l'arrivo simultaneo di più connessioni.
- Correzione - link-safe / - copy-unsafe-links per gestire correttamente i link simbolici che hanno tagli consecutivi nel valore.
- Corretto il parsing di un [IPv6_LITERAL_ADDR] quando un USER @ è prefissato.
- Il mittente ora ignora un collegamento simbolico (fittizio) con un valore di lunghezza 0, che evita un errore di trasferimento nel ricevitore.
- Corretto un caso in cui il mittente poteva morire con un errore di tag-0 se c'era un I / O durante l'invio dell'elenco dei file.
- Corretto lo script rrsync per evitare un problema sul lato server quando -e è all'inizio delle opzioni brevi.
- Risolto un problema in cui una directory scomparsa poteva trasformarsi in un codice di uscita 23 invece del codice di uscita appropriato 24.
- Risolto il problema della conversione --iconv dei collegamenti simbolici quando si eseguiva una copia locale.
- Risolto un problema per cui --one-file-system non interrompeva le eliminazioni sul lato ricevente quando una directory del punto di mount non corrispondeva a una directory nel trasferimento.
- Corretto il rilascio di una maschera ACL quando non erano presenti valori ACL con nome.
- Risolto un problema di corruzione ACL / xattr in cui l'opzione --backup poteva causare che rsync associasse le informazioni ACL / xattr errate con i file ricevuti.
- Corretto l'uso di --xattrs con --only-write-batch.
- Corretto l'uso di --dry-run con --read-batch.
- Corretto l'uso errato di configure di configure.
- Corretto l'opzione --disable-debug di configure.
- Risolto un problema di run-time per i sistemi che non riescono a trovare iconv_open () aggiungendo l'opzione --disable-iconv-open configure.
- Reclami e muori se l'utente tenta di combinare --remove-source-files (o deprecato --remove-send-files) con --read-batch.
- Risolto un problema nel trasferimento di file speciali da Solaris a Linux.
I commenti non trovato