rsync vai attālā sinhronizācija ir programmatūras utilīta Unix līdzīgām sistēmām, kas efektīvi sinhronizē failus un direktorijus starp diviem resursdatoriem vai iekārtām. Viens ir avots vai lokālais resursdators, no kura faili tiks sinhronizēti, otrs ir attālais resursdators, kurā notiks sinhronizācija. Pamatā ir divi veidi, kā rsync var kopēt/sinhronizēt datus:
- Kopēšana/sinhronizēšana uz/no cita saimniekdatora, izmantojot jebkuru attālo apvalku, piemēram ssh , rsh .
- Kopēšana/sinhronizēšana, izmantojot rsync dēmonu, izmantojot TCP.
Rsync ir slavena ar savu delta pārsūtīšanas algoritms , kurā tiek kopētas tikai atšķirības starp avota failiem, kas atrodas vietējā resursdatorā, un esošajiem failiem galamērķī vai attālajā resursdatorā.
Piemērs:
rsync local-file user@remote-host:remote-file>
Kas notiek šeit:
Rsync vispirms izmantos SSH, lai izveidotu savienojumu kāuser>uz attālo saimniekdatoru un lūgsuser's>parole. Kad būs izveidots savienojums, tas izsauks attālā resursdatora rsync, un pēc tam abas programmas noteiks, kuras lokālā faila daļas ir jākopē, lai attālais fails atbilstu vietējam. Lūdzu, ņemiet vērā šādu rsync darbību:
- Faili, kas neeksistē attālajā resursdatorā, tiek kopēti.
- Atjauninātie faili tiks sinhronizēti, rsync uz attālo saimniekdatoru kopēs tikai mainītās failu daļas.
- faili, kas ir tieši tādi paši, netiek kopēti attālajā resursdatorā.
Komandas 'rsync' sintakse operētājsistēmā Linux
rsync [options] source [destination]>
Opcija pieejams komandā `rsync' operētājsistēmā Linux
| Iespējas | Apraksts |
|---|---|
| a, –arhīvs | Tas ir līdzvērtīgs lietošanai -rlptgoD . Arhīva režīmā ir iekļautas visas nepieciešamās opcijas, piemēram, failu rekursīva kopēšana, gandrīz visa saglabāšana (piemēram, simboliskās saites, failu atļaujas, lietotāju un grupu īpašumtiesības un laikspiedoli). |
| -v, - runīgs virkni salīdzināt ar java | Pēc noklusējuma rsync darbojas klusi. Izmantojot vienu opciju -v, tiek sniegta informācija par pārsūtītajiem failiem un kopsavilkums beigās. Divu opciju -v pievienošana nodrošina statusa atjauninājumus par delta pārraidi un izlaistajiem failiem, kā arī papildu informāciju beigās. Rsync atkļūdošanai parasti tiek izmantotas vairākas opcijas -v. |
| -h, -cilvēkam lasāms formāts | Izvadi cilvēkam lasāmā formātā. |
| -z, -saspiest | Pārsūtīšanas laikā saspiediet faila datus |
Piemēri
Izmantojot `rsync' kā saraksta komandu
Ja ir norādīts tikai avota ceļš, avota saturs tiek uzskaitīts līdzīgā izvades formātāls -l>.
rsync foo/>
Iepriekš minētajā komandā tiks uzskaitīti direktorijā esošie faili un direktoriji foo .
Izvade:
Kopēt/sinhronizēt failus un direktoriju lokāli
Ja ne avota, ne mērķa ceļā nav norādīts attālais resursdators, rsync komandas darbojas kā kopēšanas komanda.
rsync -avh foo/ bar/>
Iepriekš minētā komanda kopēs/sinhronizēs visus direktorijā esošos failus un direktorijusfoo>uz direktoriju bārs . Ja mērķa direktorija nav (šeitbar>), rsync automātiski izveido vienu un kopē visus tajā esošos datus.
Izvade:
Rsync, izmantojot ssh
Ir divi dažādi veidi, kā rsync sazināties ar attālo sistēmu:
- Izmantojot attālās čaulas programmu kā transportu (piemēram,
ssh>(Secure Shell) vairsh>(Remote Shell)). - Tieša sazināšanās ar rsync dēmonu, izmantojot TCP.
Šeit mēs apspriedīsim rsync, izmantojot ssh.
rsync -avhze ssh /foo user@remote-host:/tmp/>
Lai norādītu izmantojamā protokola veidu,-e>opcija tiek izmantota.
Izvade:
Rsinhronizējiet ar noteiktām failu atļaujām
Ja mēs vēlamies sinhronizēt failus ar vietējo vai attālo resursdatoru ar maināmo failu atļaujām. Jāizmanto šāda komanda.
rsync -avhe ssh --chown=USER:GROUP /foo user@remote-host:/tmp/>
Iepriekš minētā komanda sinhronizēs visus direktorijā esošos failus /foo ar failiem, kas atrodas direktorijā /tmp iekšremote-host>ar visiem failiem, kas pieder lietotājam USER ar grupu GROUP.
Izvade:
Piezīme: Theuser>ungroup>jau ir jāizveido attālajā resursdatorā.
Sinhronizēt ar --ignore-existing-files>
Mēs varam arī izlaist jau esošos failus galamērķī. To parasti var izmantot, kad mēs veicam dublēšanu, izmantojot –link-dest opciju, vienlaikus turpinot dublēšanas darbību, kas tika pārtraukta.
rsync --ignore-existing -avhe /foo user@remote-host:/tmp/>
Tātad visi faili, kas galamērķī nepastāv, tiks pārkopēti. Šeit es izdzēsugeeksforgeeks>mapi no direktorijafoo>, tāpēc tam vajadzētu kopēt tikaigeeksforgeeks>direktoriju.
Piezīme: Tādējādi netiek ignorēti esošie direktoriji, pretējā gadījumā nekas netiks darīts. Pat ja failā ir veiktas dažas izmaiņas vietējā resursdatorā, tas joprojām netiks sinhronizēts, ja tas atrodas attālajā resursdatorā.
Izvade:
gimp eksportēt kā jpg
Rādīt progresu pārsūtīšanas laikā
Lai parādītu progresu, pārsūtot datus no vietējā resursdatora uz attālo resursdatoru, mēs varam izmantot-–progress>opciju.
rsync -avhe ssh --progress /foo user@remote-host:/tmp/>
Kad konkrēta faila pārsūtīšana ir pabeigta, rsync izvada kopsavilkuma rindiņu, kā parādīts tālāk.
Izvade:
Iepriekš redzamajā attēlā, ja skatāmies uz failu/foo/file2>, tas mums to saka
- Faila kopējais garums bija 44 baiti.
- Visa faila vidējais pārsūtīšanas ātrums bija 42,97 kilobaiti sekundē 0:00:00 sekundēs, kas bija nepieciešamas, lai pabeigtu.
- Tā bija otrā pārsūtīšana straumes laikā rsync sesija.
- Attālajam saimniekdatoram ir jāpārbauda vēl 10 faili (lai redzētu, vai tie ir atjaunināti) no 13 failiem, kas ir failu sarakstā.
Ja mēs vēlamies kopēt failus, izmantojot attālo resursdatoru, kas nesen ir atjaunināti vietējā failu sistēmā. Tas tiek darīts ar -Atjaunināt karogs. Tagad uzvedība ir šāda:
- Faili, kas neeksistē attālajā resursdatorā, tiek kopēti.
- Faili, kas pastāv gan lokālajā, gan attālajā, bet kuriem ir jaunāks lokālā resursdatora laikspiedols, tiek kopēti uz attālo resursdatoru. (Savukārt faili, kuriem ir vecāks laikspiedols, netiek kopēti).
Šeit es veicu dažas izmaiņas fails1 un fails2 , bet izmaiņas fails2 tika veikti nesen. Tātad tikai fails2 tiks sinhronizēts.
rsync -avhe ssh --progress --update /foo root@remote-host:/tmp/>
Izvade: 
Pēc veiksmīgas pārsūtīšanas automātiski izdzēsiet failus no vietējā resursdatora
Tagad pieņemsim, ka mums ir tīmekļa serveris un rezerves serveris, un mēs izveidojām ikdienas dublējumu un sinhronizējām to ar mūsu dublējuma serveri, un tad mēs nevēlamies saglabāt vietējo dublējuma kopiju savā tīmekļa serverī. Tātad, tā vietā, lai pēc veiksmīgas pārsūtīšanas to izdzēstu manuāli, mēs varam izmantot--remove-source-files>karodziņš, lai automātiski izdzēstu failus no tīmekļa servera.
rsync -avhe ssh --remove-source-files /foo user@backup-server:/tmp>
Izvade:
Piezīme: Tas izdzēsīs tikai failus, nevis direktorijus.
Izdzēsiet failus, kas ir izdzēsti vietējā resursdatorā
Ja lokālajā resursdatorā ir dzēsti daži faili un mēs vēlamies, lai tie tiktu atjaunināti arī attālajā resursdatorā, tad mums ir jāizmanto--delete>opciju.
rsync -avhe ssh /foo --delete user@remote-host:/tmp/>
Izvade:
Tātad, lūk fails1 , fails2 , fails3 tika dzēsti vietējā resursdatorā un, kā redzams, tiek atjaunināti arī attālajā resursdatorā.
Piezīme: ` rsync` neizdzēš failus automātiski, lai sinhronizētu abās pusēs esošos direktorijus.
Sausā brauciena veikšana ar `rsync'
Sausā palaišana liek `rsync' veikt izmēģinājuma palaišanu, kas neveic nekādas izmaiņas un parāda gandrīz tādu pašu izvadi, ko darītu reālā izpildē. To parasti izmanto kopā ar opcijām -v, -verbose un/vai -i, -itemize-changes, lai redzētu, ko komanda 'rsync' darītu, pirms tā faktiski tiek palaista.
rsync -avhe ssh --dry-run --chown=USER:GROUP /foo user@remote-host:/>
Izvade:
Secinājums
Šajā rakstā mēs apspriedām komandu rsync operētājsistēmā Linux, kas ir daudzpusīgs un jaudīgs rīks failu un direktoriju sinhronizēšanai starp resursdatoriem vai mašīnām. Ar delta pārsūtīšanas algoritmu un dažādām opcijām tas piedāvā efektīvu datu sinhronizāciju, dublēšanas iespējas un failu pārsūtīšanas pārvaldību. Apgūstot rsync komandu, Linux lietotāji var nodrošināt failu konsekvenci, optimizēt datu pārraidi un racionalizēt datu pārvaldības darbplūsmas.