Il modo più sicuro e affidabile per spostare i file dall'unità A all'unità B

3

Sto cercando di trovare il modo più sicuro per spostare i dati tra due dischi, progettati per gestire le peggiori circostanze possibili. Ad esempio: se stavi cercando di spostare le uniche copie esistenti di foto di tuo figlio nato mentre una scimmia impazzita stava vagando per le sale e poteva tirare il cavo di alimentazione sul tuo Mac e / o sulle unità esterne in qualsiasi momento.

Si noti che c'è un domanda simile per la sincronizzazione , ma ti sto chiedendo specificamente di spostamento che è un problema diverso, perché (tra l'altro) devi essere in grado di dire quali file sono stati spostati e quali no. È inoltre necessario considerare la possibilità che alcuni file siano stati copiati nella destinazione prevista ma non rimossi dalla fonte.

Questa soluzione non deve utilizzare la GUI. In effetti trovo il terminale confortante. Non mi dispiace installare nuovi programmi (specialmente se disponibili tramite brew ). L'unico requisito è che la soluzione sia compatibile con Mac OS X 10.8.

Ecco la soluzione del flusso di lavoro che ho in mente:

  1. cp (copia) file (se necessario)
  2. file di checksum (sia dopo la copia o se viene trovata una copia esistente del file)
  3. Sposta il file originale nel cestino (non rm !) dopo che un file è stato spostato nella nuova posizione

Più in particolare:

  1. L'utente specifica dove spostare i file in (cartella destinazione / destinazione). Chiamalo $DEST (Sarebbe simile al flag --target-directory a GNU mv

  2. L'utente specifica file / cartelle che devono essere spostati in $DEST . Chiama quel $INPUT

  3. Script cercherebbe quindi ogni file / cartella da $INPUT su $DEST .

  4. Se il file / cartella è trovato su $DEST , allora checksum contro $INPUT copy.

  5. Se la somma di controllo corrisponde, sposta $INPUT copia nel cestino.

  6. Se il checksum non corrisponde, sostituisci $DEST copia con $INPUT

Nota: mentre mi preoccupo delle autorizzazioni (tecnicamente mi interessa di "eseguibilità"), non mi interessa la "proprietà" poiché sono l'unico utente di questo sistema locale.

Prima di andare a reinventare la ruota, esiste già qualcosa del genere?

Fondamentalmente voglio la massima sicurezza possibile che sia stata creata una buona copia prima di cancellare l'originale, senza eseguire una sincronizzazione completa tra le due unità.

    
posta TJ Luoma 30.05.2013 - 09:08
fonte

1 risposta

5

Utilizzerei la stessa soluzione della sincronizzazione, con l'opzione data a rsync per rimuovere i file sorgente. Qualcosa del genere:

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

Come hai detto, perché reinventare la ruota? checksum rsync ogni file trasferito per assicurarsi che sia stato trasferito correttamente.

    
risposta data 30.05.2013 - 09:17
fonte

Leggi altre domande sui tag