Estoy tratando de encontrar la manera más segura para mover datos entre dos unidades, diseñado para soportar las peores circunstancias posibles. Por ejemplo: si usted estaba tratando de mover la única existente copias de las imágenes de su hijo nacer, mientras que un mono enloquecido estaba vagando por los pasillos y podría tirar el cable de alimentación en tu Mac y/o las unidades externas en cualquier momento.
Tenga en cuenta que hay una pregunta similar para la sincronización, pero estoy preguntando específicamente sobre el movimiento , que es un problema diferente, porque (entre otras razones), usted tiene que ser capaz de decir qué archivos se han movido y a los que no. También es necesario tomar en cuenta la posibilidad de que es posible que algunos archivos se han copiado en el lugar de destino pero no se elimina de la fuente.
Esta solución no tiene que utilizar la interfaz gráfica de usuario. De hecho me parece el Terminal reconfortante. No me importa la instalación de nuevos programas (especialmente si está disponible a través de la brew
). El único requisito es que la solución sea compatible con Mac OS X 10.8.
Aquí está el trabajo de flujo de la solución que tengo en mente:
-
cp
(copiar) archivos (si es necesario) - suma de comprobación de archivos (ya sea después de la copia o una copia de la que se encuentra el archivo)
- Mover el archivo original a la basura (no
rm
!) una vez que un archivo ha sido movido a la nueva ubicación
Más específicamente:
El usuario especifica la ubicación de los archivos debe ser movido a (destino/carpeta de destino). Llamarlo
$DEST
(Esto sería similar a la--target-directory
bandera para GNUmv
El usuario especifica los archivos/carpetas que deben ser trasladados a
$DEST
. Llamada que$INPUT
Secuencia de comandos a continuación, sería para cada archivo/carpeta de
$INPUT
a$DEST
.Si el archivo/carpeta se encuentra en
$DEST
después de la suma de comprobación contra$INPUT
copia.Si la suma de comprobación de los partidos, mueva
$INPUT
copia a la papelera.Si la suma de comprobación no coincide, reemplace
$DEST
copia$INPUT
Nota: mientras que yo no la atención acerca de los permisos (técnicamente me importa "ejecutabilidad"), no me importa acerca de la "propiedad" como yo soy el único usuario de este sistema local.
Antes de que me vaya y re-inventar la rueda, hace algo como esto ya existe?
Básicamente quiero tan seguras como sea posible que una buena copia se ha realizado antes de eliminar el original, sin hacer una sincronización completa entre las dos unidades.