Sincronizar cartafoles con RSync

Nesta publicación, cobre os conceptos básicos de rsync, en preparación para unha futura publicación que cubrirá as copias de seguridade e o uso de rsync en conxunto con cronjobs para automatizar o proceso de copia de seguridade. Desde a copia e sincronización de ficheiros e carpetas locais, ao seu uso para transferir información entre ordenadores. O seu uso como servizo cando SSH non está dispoñible foi trasladado á súa propia sección.

Temas
Os principios básicos de RSync
Facer os ficheiros e carpetas locais
Gantalón con espazos en branco e Outros caracteres raros
Actualizar os contidos dun cartafol
Sincronizar dúas carpetas con RSync
Comprimir os ficheiros antes de transferirlles
a transferencia de ficheiros entre dous sistemas remotos
Excluíndo ficheiros e directorios
usando RSync Como servizo (trasladado á súa propia sección)
algúns parámetros de RSync adicionais
notas ao pé de páxina

Os principios básicos de RSync

rsync é unha ferramenta de copia moi versátil que está incluída en case todas as versións de Linux. Pódese usar como ferramenta de copia avanzada, permitíndonos copiar arquivos localmente ou remotamente. Ademais, pode ser usado como ferramenta de copia de seguridade, soporta a creación de copias de seguridade incrementais.

rsync ten un famoso algoritmo de transferencia de delta-delta que nos permite Para transferir ficheiros novos, así como os cambios recentes nos ficheiros existentes, ignorando os ficheiros que non foron modificados. Ademais disto, pódese personalizar o comportamento de rsync, axudándose a automatizar as copias de seguridade, tamén se pode usar como un servizo para converter a computadora nun servidor e permitir que outros clientes poidan rsync Conéctate a el.

Ademais da copia de ficheiros e cartafoles locais, rsync permítenos copiar Usando como Medio SSH (Secure Shell), RSH (Shell remoto) e pode executarse como un servizo nunha computadora e permitir que outras computadoras se conecten, cando rsync úsase como un servizo que escoita porto 873.

Cando usamos rsync como un servizo ou cando usamos RSH, os datos enviados entre as computadoras non viaxan cifradas, polo tanto, se está a transferir ficheiros entre dúas computadoras da mesma rede local, isto é útil, pero isto non debe ser usado para transferir ficheiros en redes inseguras, xa que é Internet. Para este propósito, SSH é o mellor para usar.

Esta é a principal razón pola que favore o uso de SSH para as miñas transferencias, ademais, grazas a que está seguro, moitos servidores teñen o servizo SSH dispoñible .. Pero o uso de rsync como un servizo para transferencias en conexións rápidas, como adoita ser o caso nas redes locais, é útil. Non teño o servizo RST correndo nos meus ordenadores para que poidas descubrir que favorece SSH nos exemplos. Exemplos Use SSH como medio de transporte para transferencias entre ordenadores remotos, pero nunha publicación separada, cobre o uso de RSync como servizo.

Copiar ficheiros e cartafoles locais

para copiar Os contidos dun cartafol noutro, substituíndo os ficheiros no cartafol de destino, podemos usar:

rsync -rtv carpeta_origen/ carpeta_destino/

Teña en conta que no Folder_Origen engadín unha diagonal ao final, facendo isto impide que se cree un novo cartafol, se non engadimos a diagonal, entón crearase un cartafol novo cartafol_origen en folder_destino. Polo tanto, se desexa copiar o contido dun cartafol chamado imaxes dentro dun cartafol chamado imaxes que xa existen, ten que engadir a diagonal ao final, se non, un cartafol chamado imaxes crearase dentro do cartafol chamado imaxes que especificamos como destino.

rsync -rtv origen/ destino/

Representación gráfica do resultado despois de usar RSync cunha diagonal ao final da fonte cartafol.

rsync -rtv origen destino/
Representación gráfica do resultado despois de usar RSync sen unha diagonal ao final do cartafol de orixe .

O parámetro significa que fará que a copia recursiva dos cartafoles sexa, creará toda a estrutura dos cartafoles dentro O cartafol de The_origen e copiará todos os ficheiros que se atopan dentro destes.

O parámetro -t fai rsync Preservar os tempos de modificación dos ficheiros que copian desde o cartafol de orixe.

O parámetro -v significa que a información impresa durante a execución do programa será moito máis detallada, podemos usar isto para ver o progreso do comando.

Estes son os parámetros que uso con frecuencia, xa que normalmente estou apoiando ficheiros persoais e estes non conteñen cousas como ligazóns simbólicas, senón outro parámetro moi útil que se pode usar con rsync é o parámetro -unha.

rsync -av origen/ destino/

o parámetro -a tamén fai copiar e preserva os tempos de modificación, pero tamén copia as ligazóns simbólicas que atopas como ligazóns simbólicas, preservar os permisos, preservar a información do propietario e o grupo de ficheiros e preservar os ficheiros do dispositivo e os ficheiros especiais. Isto é útil se está copiando o directorio persoal dun usuario ou se está a copiar carpetas do sistema a outro lugar.

ligado con espazos en branco e outros caracteres raros

Podemos escapar do espazo e personaxes raros, así como en bash, usando \ antes de calquera espazo en branco e carácter raro. Adicionalmente, podemos usar comiñas simples para incluír a cadea de texto:

rsync -rtv or\{ig\ en/ des\ ti\{no/
rsync -rtv 'or{ig en/' 'des ti{no/'

Actualizar o contido dun cartafol

Para gardar ancho de banda e tempo, podemos evitar copiar ficheiros que xa temos no cartafol de destino que non foi modificado no cartafol de orixe. Para iso, engadimos o parámetro -U a rsync, isto actualizará os contidos do cartafol de destino en función do cartafol de orixe, aquí é onde entra o algoritmo de transferencia de delta. Para actualizar os contidos dun cartafol en función dos contidos doutro uso:

rsync -rtvu carpeta_origen/ carpeta_destino/

por defecto, rsync Tome a data da última modificación do ficheiro e do tamaño disto para decidir que ficheiros deben ser transferidos e que os ficheiros poden ser ignorados, pero podemos usar no canto deste método un hash para decidir se o O ficheiro é diferente ou non.

Para facelo necesitamos usar o parámetro -c, que realizará unha suma de verificación nos ficheiros a transferir. Isto ignorará calquera ficheiro onde coincide con checksum.

rsync -rvuc carpeta_origen/ carpeta_destino/

sincronizando dúas carpetas con RSync

para manter dous Os cartafoles de sincronía, non só necesitamos engadir os novos ficheiros no cartafol de orixe ao cartafol de destino, tamén necesitamos eliminar os ficheiros que foron eliminados do cartafol de orixe no cartafol de destino. rsync permítenos facelo co parámetro –delete, isto utilizado en conxunto co anterior -U parámetro que actualiza os ficheiros modificados permítenos manter dúas carpetas no ancho de banda de Synchrony gardando.

rsync -rtvu --delete carpeta_origen/ carpeta_destino/

O proceso de eliminación pode ser tomado antes, durante e despois da transferencia, podemos controlar a que hora ocorre con calquera dos Os seguintes parámetros:

  • rsync Pode buscar ficheiros perdidos e borralos antes do proceso de transferencia, este é o comportamento predeterminado e pode ser axustado con --delete-before
  • rsync Pode buscar ficheiros perdidos e borralos despois de completar a transferencia, co parámetro --delete-after
  • rsync pode eliminar os ficheiros durante a transferencia, cando se atopa un ficheiro que falta, elimínase Naquela época, activamos este comportamento con --delete-during
  • rsync pode facer que a transferencia e atopar ficheiros que faltan durante isto Proceso, agarde ata que termine e elimine os ficheiros que máis tarde atopaches máis tarde, isto pódese conseguir con --delete-delay

Por exemplo:

rsync -rtvu --delete-delay carpeta_origen/ carpeta_destino/

Comprimir os ficheiros antes de transferirlles

para gardar algún ancho de banda e normalmente aforrar moito tempo, podemos Comprimir a información que está a ser transferida, podemos engadir o parámetro -z a rsync para lograr isto.

rsync -rvz carpeta_origen/ carpeta_destino/

Se estamos a transferir unha gran cantidade de ficheiros sobre unha conexión rápida, rsync pode ser máis lento co parámetro -z que sen el, xa que levará máis tempo para comprimir cada ficheiro como o Tempo que se tomaría simplemente para transferir os ficheiros a The_Destino Cartafol. Use este parámetro se ten unha conexión con velocidade limitada entre dúas computadoras ou se precisa gardar ancho de banda.

Transferencia de ficheiros entre dous sistemas remotos

rsync Pode copiar ficheiros e sincronizar un cartafol local cun cartafol remoto nun sistema que ten Un sistema que ten un acceso ao sistema a través de SSH, a través de RSH ou que está a executar rsync como servizo. Exemplos aquí usar SSH para transferencia de arquivos, pero os mesmos principios se aplican se quere facelo con rsync executado como servizo no ordenador remoto, lea executando rsync como un servizo cando SSH é Non dispoñible a continuación para obter máis información sobre isto.

Para transferir ficheiros entre a computadora local e unha computadora remota, necesitamos especificar a dirección do ordenador remoto, pode ser un nome de dominio, unha dirección IP, Ou o nome dun servidor que previamente gardamos no noso ficheiro de configuración SSH (información sobre como facer isto pódese ver na definición de servidores SSH), seguidos de dous puntos e o cartafol que queremos usar para a transferencia. Teña en conta que rsync non pode transferir ficheiros entre dous sistemas remotos, só un cartafol local ou un cartafol remoto pode ser usado en conxunto cun cartafol local. Para iso, usamos:

Cartafol local a cartafol remoto, usando un dominio, unha dirección IP ou un servidor definido no ficheiro de configuración SSH: rsync -rtvz carpeta_origen/ [email protected]:/ruta/a/carpeta_destino/
rsync -rtvz folder_origen / [email protected]/ruta/a/carpet_destino/ rsync -rrtvz_origen_name / servername_name: / ruta / a / folder_destine /

Cartafol remoto para o cartafol local , usando un dominio, unha dirección IP ou un servidor definido no ficheiro de configuración SSH: rsync -rtvz [email protected]:/ruta/a/carpeta_origen/ carpeta_destino/
Rsync -rtvz usuario @ xxx.xxx.xxx.xxx:/ ruta / a / carpet_origen / folder_destino /
rsync -rtvz ServerName: / ROUTE / A / folder_origen / folder_destine /

Excluíndo ficheiros e directorios

Hai moitos casos nos que necesitamos Para excluír certos ficheiros e directorios de rsync, un caso común é cando sincronizamos un proxecto local cun repositorio remoto ou mesmo cun sitio de vida, neste caso poderiamos excluír algúns Directorios de desenvolvemento e algúns ficheiros ocultos para ser transferidos ao sitio de vida. Excluír ficheiros pódese facer con --exclude seguido do directorio ou ficheiro que queremos excluír. O cartafol de orixe ou o cartafol de destino pode ser un directorio local ou un directorio remoto, tal como se explica na sección anterior.

rsync -rtv --exclude 'directorio' carpeta_origen/ carpeta_destino/
rsync -rtv --exclude 'archivo.txt' carpeta_origen/ carpeta_destino/
rsync -rtv --exclude 'direccion/a/directorio' carpeta_origen/ carpeta_destino/
rsync -rtv --exclude 'direccion/a/archivo.txt' carpeta_origen/ carpeta_destino/

As rutas son relativas ao cartafol desde o que estamos chamando rsync, a menos que comece cunha diagonal, nese caso a ruta sería absoluta.

doutro xeito Para facer isto é crear un ficheiro coa lista de ficheiros e directorios para excluír de rsync, así como os patróns (todos os ficheiros que caen dentro do patrón determinado serían excluídos, *. TXT excluíu calquera ficheiro con esa extensión), unha por liña e chame a este ficheiro con --exclude-from seguido do ficheiro que queremos usar para a exclusión dos ficheiros. Primeiro, creamos e editamos este ficheiro no noso editor de texto favorito, neste exemplo, uso gedit, pero pode usar Kate, Vim, Nano ou calquera outro editor de texto:

touch excluidos.txt
gedit excluidos.txt

Neste ficheiro podemos engadir o seguinte:

directorio
direccion/relativa/a/directorio
archivo.txt
direccion/relativa/a/archivo.txt
/home/juan/directorio
/home/juan/archivo.txt
*.swp

e despois chame rsync:

adicionalmente para eliminar ficheiros que foron eliminados do cartafol de orixe, como se explica na sincronización de dúas carpetas con RSync, rsync pode eliminar ficheiros que están excluídos da transferencia, podemos facelo co parámetro --delete-excluded, por exemplo:

rsync -rtv --exclude-from 'excluidos.txt' --delete-excluded carpeta_origen/ carpeta_destino/

Este comando fará rsync recursive , preservará os tempos de modificación do cartafol de orixe, aumenta a verbosidade, exclúe todos os ficheiros que caen dentro dos patróns do ficheiro ex Cluidos.txt e eliminar todos os ficheiros excluídos se existen no cartafol de destino.

Usar RSync como servizo cando SSH non está dispoñible

Esta foi movida á súa propia sección, usando RSync como servizo

Algúns parámetros adicionais de RSync

-t conserva os tempos de modificación dos ficheiros que están a ser transferidos.
-q Eliminar todas as mensaxes que non son erros, este parámetro é contrario ao parámetro -V que mostra moito máis información de transferencia.
-d Copie os ficheiros dun directorio sen usar a recursión para copiar os directorios internos, ao dicir, só se transfiren os ficheiros.
-l Copiar as ligazóns simbóllicas como ligazóns simbólicas
-L Copiar os ficheiros aos que está apuntando unha ligazón simbólica cando atopa unha ligazón simbólica.
-W Copiar ficheiros completos, xa que cando usamos o algoritmo de transferencia de delta, só se copia a parte dun ficheiro que se actualizou, ás veces isto non está desexado.
Mostra o progreso dos ficheiros que están sendo transferidos.
-h Mostra a información que proporciona rsync dun formato máis lexible, As cantidades danse en K, M’s, G’s, e así por diante.

Notas do pé

O número de opcións que rsync dá nós inmenso, podemos definir exactamente cales arquivos que queremos Transferencia, que ficheiros específicos queremos comprimir, que ficheiros queremos eliminar no cartafol de destino se estes ficheiros existen, e tamén podemos tratar cos ficheiros do sistema, para máis información que podemos usar man rsync e man rsyncd.conf

Deixar a información que se refire ás copias de seguridade fóra desta publicación, xa que isto será cuberto, xunto coa automatización do proceso de copia de seguridade, nun Publicación futura.

É posible usar rsync en Windows a través do uso de Cygwin, pero non teño unha computadora de Windows dispoñible neste momento (ou plan para telo nun futuro próximo), entón aínda que fixen isto non podo publicar sobre iso. Non obstante, se usa rsync como un servizo de Windows, cómpre engadir o “scrict mode = false” en rsyncd.conf nos módulos, isto Fará que rsync non revise os permisos do ficheiro secreto xa que se o fixo, fallaría porque non se configuraría correctamente (xa que non funcionan como en Linux ).

Esta publicación podería actualizarse se hai algo que se debe corrixir ou engadir máis información se o vexo necesario.

Deixa unha resposta

O teu enderezo electrónico non se publicará Os campos obrigatorios están marcados con *