Es un poco divertido, hay muchas maneras en que las herramientas de línea de comandos de Linux son muy superiores a las de Windows, pero una cosa que no he encontrado es equivalente a la robocopia . Robocopy es mucho más versátil que cp
, y no puedo entender cómo hacer lo que quiero con las herramientas de Linux.
Un caso de uso específico es que tengo dos directorios con archivos en su mayoría similares, pero uno tiene archivos fuente más nuevos y uno tiene archivos de contenido que el otro directorio no tiene, y posiblemente archivos fuente más nuevos (para un sitio web). Quiero copiar los archivos del último directorio en el primero, agregando nuevos archivos de contenido y demás, pero sin sobrescribir los archivos más nuevos en el directorio de destino.
Traté de descubrir cómo hacer esto en Linux durante aproximadamente media hora, decidí que probablemente tendría que aprender bash scripting o algo para hacer lo que quería, y luego me di cuenta de que podía usar robocopy. También tenía otros requisitos. Básicamente, estaba convirtiendo un sitio web de Python (Django) de un repositorio SVN a un repositorio Git, y quería asegurarme de no tener cambios no confirmados en SVN. Sin embargo, quería excluir condicionalmente los .svn
directorios y los .pyc
archivos compilados de Python. El siguiente comando robocopy hace exactamente lo que quiero:
robocopy source destination /XO /E /XD .svn /XF *.pyc
¿Hay algún equivalente a Robocopy en Linux? Lo examiné rsync
brevemente, pero parecía que tendría que configurar un servidor rsync antes de intentar sincronizar las carpetas.
Respuestas:
Parece que rsync es definitivamente lo que buscas. No necesita configurar un 'servidor rsync' para copiar archivos de una máquina a otra. Rsync admite la copia de archivos a través de SFTP (SSH File Transfer) que la mayoría de las cajas de Linux ya han habilitado (si no está deshabilitado manualmente)
Consulte los archivos de Lifehacker's Mirror en los sistemas con rsync para obtener más detalles:
fuente
scp
sintaxis básicamente similar para transferir a través de ssh? En realidad estaba tratando de transferir archivos en una máquina, pero es bueno saberlo.rsync copiará archivos de un directorio a otro directorio en la misma máquina como robocopy. Aquí está el comando rsync que es equivalente a su comando robocopy:
Esto copiará recursivamente el origen al destino y excluirá los archivos más antiguos, así como los directorios / archivos '.svn' y '* .pyc'.
fuente