¿Alguien puede decirme qué hace esto?
rsync -uva --delete /srv/bkp01 /srv/offbk2/ > ~/offbkp01.log
¿Elimina bkp01
y offbk2
envía un registro a offbkp01.log
?
¿Alguien puede decirme qué hace esto?
rsync -uva --delete /srv/bkp01 /srv/offbk2/ > ~/offbkp01.log
¿Elimina bkp01
y offbk2
envía un registro a offbkp01.log
?
Respuestas:
Para dividir esto en partes, hay dos secciones principales, seguidas de un resumen y notas:
rsync
comando:rsync -uva --delete /srv/bkp01 /srv/offbk2/
rsync-command > ~/offbkp01.log
rsync
mando:rsync
- Supongo que esto no necesita explicación (pero proporcionará si se solicita).-uva
- Un conjunto de opciones de un solo carácter, siendo (se muestra la forma corta y larga):
-u
--update
- Le dice a rsync que todas las modificaciones solo deberían aplicarse a los archivos en el destino que tengan la misma edad (y diferentes tamaños) o más antiguos que los de la fuente. Es decir, rsync solo debe transmitir los cambios desde el origen que actualizarían el destino, pero no debe realizar ningún cambio que haga que un archivo de destino se convierta en una versión anterior.
Hay algunas excepciones Las diferencias de tipo (por ejemplo, una es un archivo, la otra es un directorio) provocarán una actualización independientemente de las fechas. Los enlaces simbólicos y otros archivos especiales ignoran esta opción. Y, lo que es más importante, esto no afecta qué archivos se eliminan.
-v
--verbose
- Aumenta la cantidad de información que rsync imprime mientras se ejecuta. Sin esto, rsync no imprimirá (¿casi?) Nada. Con esta opción tal cual, rsync le dirá qué archivos se están transfiriendo y pondrá un resumen al final. Más v
s aumentan la información impresa, aunque la página del manual dice que más de dos v
s solo deben usarse al depurar. -a
--archive
- Esto es equivalente a varias otras opciones ( -rlptgD
) empaquetadas juntas. Como su nombre largo sugiere, es una forma rápida de configurar muchas opciones comunes para archivar archivos y directorios. Va a:-r
--recursive
- Le dice a rsync que copie directorios recursivamente. Sin esto, o la -d
--dirs
opción más particular , rsync simplemente omitiría cualquier directorio que encontrara (y le informaría al respecto en su salida). -l
--links
- Cuando el origen es un enlace simbólico, cree un enlace simbólico en el destino. Dependiendo de otras opciones, los enlaces simbólicos pueden omitirse o convertirse en una copia completa separada (es decir, un directorio verdadero con contenido (u otra copia del archivo) en lugar del enlace simbólico). -p
--perms
- Establece los permisos de los archivos de destino a los mismos que los archivos de origen. -t
--times
- Establece los tiempos de modificación de los archivos de destino a los mismos que los archivos de origen. Dado que mantener estos tiempos sincronizados hace que el algoritmo rsync sea más eficiente, generalmente siempre desea que se use, explícita o implícitamente. -g
--group
- Establece el atributo de grupo del destino al mismo que el origen. Se asocia por nombre de forma predeterminada, pero volverá al número de identificación del grupo en algunas circunstancias. Si el rsync receptor no se ejecuta como superusuario (o lo simula --fake-super
), solo se pueden configurar los grupos de los que es miembro el usuario que invocó rsync en el lado receptor . De lo contrario, el grupo se establecerá en el grupo predeterminado del mismo usuario mencionado anteriormente. -D
- Equivalente a las opciones --devices
y --specials
juntas. Significan:--devices
- Se transfieren los archivos de caracteres y dispositivos de bloque. No tiene ningún efecto si el rsync receptor no se ejecuta como superusuario (o si lo está simulando --fake-super
). --specials
- Se transfieren archivos especiales (como sockets) (de lo contrario, no lo serían). --delete
- Le dice a rsync que elimine los archivos que están en el destino, pero no en la fuente. Esto NO se ve afectado por la opción de actualización establecida anteriormente (de hecho, ¿cómo podría ser, ya que la mayoría de los sistemas de archivos no retendrán los datos necesarios para ver qué acción era más nueva?). Esta opción actúa en las fuentes después de la expansión comodín / glob, por lo que dir / * no es lo mismo que dir /. Algunas notas importantes:--dry-run
primero con la opción, que hará una transferencia simulada que le permitirá asegurarse de que no se realicen cambios no deseados. --ignore-errors
opción, aunque probablemente no quieras / no quieras hacer eso.--delete-during
se usa el algoritmo. Si el receptor es más antiguo, entonces --delete-before
se usa. Si es importante que los archivos mantengan un cierto tipo de coherencia en caso de que ocurra un error (como no eliminar nada hasta que se realicen todos los demás cambios), debe usar una opción más específica que la predeterminada./srv/bkp01
- El archivo o directorio fuente. Hay algunas reglas detalladas sobre lo que significa si hay / no hay una barra diagonal al final del directorio, y si existe el otro directorio. Puede ver la sección USO de la página del manual para obtener detalles, pero aquí la falta de una barra diagonal significa que este directorio se copiará en el destino, en lugar de que los contenidos de este directorio se copien en el destino. Lo mismo si se trata de un archivo en lugar de un directorio./srv/offbk2/
- El directorio de destino. En general, este siempre será el último elemento listado en la sección de comando rsync a menos que se use una opción para especificarlo en otra parte del comando.>
- Esto redirige stdout (la salida estándar) de lo que está a la izquierda al archivo a la derecha, convirtiéndose en su contenido y creando el archivo (si es posible) si aún no existe. Algunas notas:2>&1
al final del comando anterior. El orden es importante, así que tenga cuidado al generalizar dónde colocar eso. El número mágico se 1
refiere a stdout, se 2
refiere a stderr, &
es (esencialmente) "la dirección de", y el fragmento de comando completo significa "redirigir la salida de stderr al flujo stdout". >>
. El método para redirigir stderr al mismo lugar sigue siendo el mismo. 1> stdout_file 2> stderr_file
. También puede usar en >>
lugar de >
ese comando para hacerlo agregando en lugar de reemplazar.~
- Esto es una abreviatura para el directorio de inicio del usuario actual y forma parte del siguiente bit.~/offbkp01.log
- el archivo offbkp01.log dentro del directorio de inicio del usuario actual. Aquí es donde se colocará la salida del comando rsync debido a la redirección con >
.En resumen, este comando:
/srv/bkp01
, /srv/offbk2/bkp01
, y eliminará todo lo /srv/offbk2/
que no esté dentro/srv/bkp01
, con las siguientes condiciones:
/srv/offbk2/
que es más reciente que su tiempo de modificación en /srv/bkp01
, no se actualizará , si ambos elementos siguen siendo del mismo tipo (archivo regular, directorio o enlace simbólico (? )). Además, rsync imprimirá cierta información sobre lo que está haciendo (específicamente, qué archivos se están transfiriendo y un resumen final ), que el shell escribirá en el archivo ~/offbkp01.log
. Ese archivo de registro se creará nuevamente si aún no existe, y se sobrescribirá si ya existe.
NB: --fake-super
es una opción utilizada para hacer que rsync simule actividades de superusuario. Lo hace mediante el uso de los atributos extendidos de los archivos para almacenar los atributos que no podría establecer sin tener mayores privilegios. La versión real de cada atributo se establece en lo que tenga sentido dadas las opciones y los privilegios disponibles. Si bien esto hace que sea conveniente realizar algunas copias de seguridad, incluso si no tiene privilegios de superusuario, también se debe tener en cuenta que puede presentar un riesgo de seguridad mayor que el uso de rsync en general, ya que los atributos de seguridad reales pueden no establecerse correctamente, a pesar de que la información sobre ellos fue respaldada.
Fuente: mucho tiempo trabajando con rsync y leyendo su página de manual .
Del manual:
--Eliminar
Esto le dice a rsync que elimine los archivos extraños del lado receptor (los que no están en el lado emisor), pero solo para los directorios que se están sincronizando. Debe haber pedido rsync para enviar todo el directorio (por ejemplo, "dir" o "dir /") sin usar un comodín para el contenido del directorio (por ejemplo, "dir / *"), ya que el comodín expande el comodín y rsync recibe una solicitud para transferir archivos individuales, no el directorio principal de los archivos. Los archivos que se excluyen de la transferencia también se excluyen de la eliminación a menos que use la opción --delete-excluded o marque las reglas como solo coincidentes en el lado de envío (consulte los modificadores de inclusión / exclusión en la sección REGLAS DE FILTRO).
Por lo tanto, eliminará los archivos del destino que no forman parte del directorio original si no utilizó comodines.
Directorio de origen:
1.txt
2.txt
3.txt
Directorio de destino:
4.txt
4.txt desaparecerá después de rsync y 1.txt, 2.txt y 3.txt estarán en el destino.
En cuanto a las otras cosas:
uva
No, solo elimina archivos extraños del bkp01
directorio.
También:
-u
, --update
- omita los archivos que son más nuevos en el receptor-v
, --verbose
- aumentar la verbosidad-a
, --archive
- modo de archivo; es igual a -rlptgoD (no -H, -A, -X)La salida del rsync -uva --delete /srv/bkp01 /srv/offbk2/
comando se envía al ~/offbkp01.log
archivo utilizando el operador de redirección ( >
) en lugar de imprimirse en su terminal. Si el archivo no existe, se creará. Si el archivo existe, el contenido anterior se borrará.
Ver man rsync
para más información.
bkp01
. Simplemente elimina archivos extraños, es decir, aquellos que no existen en la fuente, del destino.
rsync
Copia remota de archivos: sincronice árboles de archivos en discos locales, directorios o en una red.
-u update
-v verbose
-a archive
--delete --> delete
Aquí eliminará archivos dentro de offbk2 .
Luego, la salida del resultado (exitoso o no) se redirigirá a ese archivo de registro.