La forma más segura y confiable de mover archivos de la unidad A a la unidad B

3

Estoy tratando de encontrar la manera más segura de mover datos entre dos unidades, diseñado para manejar las peores circunstancias posibles. Por ejemplo: si intentaba mover las únicas copias existentes de las imágenes de su hijo que nace mientras un mono enloquecido paseaba por los pasillos y podría tirar del cable de alimentación de su Mac y / o de las unidades externas en cualquier momento.

Tenga en cuenta que hay un pregunta similar para la sincronización , pero estoy preguntando específicamente sobre mover que es un problema diferente, porque (entre otras razones) tienes que poder decir qué archivos se han movido y cuáles no. También debe tener en cuenta la posibilidad de que algunos archivos se hayan copiado al destino deseado pero no se hayan eliminado del origen.

Esta solución no tiene que utilizar la GUI. De hecho encuentro la terminal reconfortante. No me importa instalar programas nuevos (especialmente si están disponibles a través de brew ). El único requisito es que la solución sea compatible con Mac OS X 10.8.

Aquí está la solución de flujo de trabajo que tengo en mente:

  1. cp (copiar) archivos (si es necesario)
  2. archivos de suma de comprobación (ya sea después de la copia o si se encuentra una copia existente del archivo)
  3. Mover el archivo original a la papelera (¡no a rm !) después de que un archivo se haya movido a una nueva ubicación

Más específicamente:

  1. El usuario especifica dónde se deben mover los archivos a (carpeta de destino / destino). Llámelo $DEST (esto sería similar a la bandera --target-directory a GNU mv

  2. El usuario especifica los archivos / carpetas que deben moverse a $DEST . Llama a ese $INPUT

  3. El script buscará cada archivo / carpeta desde $INPUT en $DEST .

  4. Si el archivo / carpeta se encuentra en $DEST , cúmbielo contra $INPUT copy.

  5. Si la suma de comprobación coincide, mueva $INPUT copy a trash.

  6. Si la suma de comprobación no coincide, reemplace $DEST copy con $INPUT

Nota: aunque me preocupan los permisos (técnicamente me importa la "ejecutabilidad"), no me importa la "propiedad" ya que soy el único usuario de este sistema local.

Antes de ir y reinventar la rueda, ¿ya existe algo como esto?

Básicamente, quiero la mayor seguridad posible de que se haya hecho una buena copia antes de eliminar el original, sin hacer una sincronización completa entre las dos unidades.

    
pregunta TJ Luoma 30.05.2013 - 09:08

1 respuesta

5

Usaría la misma solución que para la sincronización, con la opción dada a rsync para eliminar los archivos de origen. Algo como esto:

rsync -azv --remove-source-files $INPUT $DEST

Como mencionaste, ¿por qué reinventar la rueda? rsync comprueba cada archivo transferido para asegurarse de que se haya transferido correctamente.

    
respondido por el Scot 30.05.2013 - 09:17

Lea otras preguntas en las etiquetas