Rsync: come montare TrueCrypt al volo sul lato ricevente?


3

La versione breve: come posso mantenere un backup rsync su un volume TrueCrypt? La parte difficile è montare / smontare questo volume al volo quando è necessario per rsync.

Dettagli

Questa è la mia attuale configurazione di backup (che funziona abbastanza bene per la maggior parte):

  • l'origine del backup è su Win7 64 bit, la destinazione è un box Linux remoto (Debian)
  • il trasferimento effettivo dei dati viene effettuato da rsync tramite ssh (cwRsync con cygwin)
  • il demone rsync viene avviato su richiesta tramite ssh

Nella casella Linux il backup è protetto solo dalle autorizzazioni dei file. Voglio aumentare la sicurezza qui e mettere il backup in un volume TrueCrypt. Posso fondere quel volume manualmente nella shell. La domanda è ora come posso fare in modo che rsync non solo apra una connessione ssh e avvii il demone rsync, ma anche per montare il volume TrueCrypt prima (e smontarlo dopo)?

I miei soldi sono su un'opzione --rsync-pathche può essere utilizzata per passare una riga di comando a ssh, a condizione che stdin e stdout funzionino ancora allo stesso modo. Immagino che quel comando dovrebbe essere uno script di shell. È possibile e come sarebbe la sceneggiatura?

Per riferimento, ecco una citazione di tale opzione:

--rsync-path=PROGRAM

Utilizzare questo per specificare quale programma deve essere eseguito sul computer remoto per avviare rsync. Spesso usato quando rsync non si trova nel percorso predefinito della shell remota (ad es --rsync-path=/usr/local/bin/rsync.). Si noti che PROGRAMviene eseguito con l'aiuto di una shell, quindi può essere qualsiasi programma, script o sequenza di comandi che si desidera eseguire, a condizione che non danneggi lo standard-in e lo standard-out che rsync sta usando per comunicare.

Un esempio complicato è impostare una diversa directory predefinita sul computer remoto da utilizzare con l' --relativeopzione. Per esempio:

rsync -avR --rsync-path="cd /a/b && rsync" host:c/d /e/

Questa è la pagina man completa di rsync .

Risposte:


1

Nel frattempo ho risolto qualsiasi problema e ho una soluzione che funziona per me da alcune settimane. Nel caso qualcuno fosse interessato, sto pubblicando i dettagli qui. Questo articolo di Troy Johnson ha aiutato lungo la strada.

Prerequisiti

  • TrueCrypt installato su Linux e disponibile sul percorso
  • un contenitore TC preparato e disponibile presso /home/deepc/var/backup.tc
  • cygwin e rsync installati su Windows e disponibili sul percorso

Linux

Ho creato due script di shell per montare e smontare il contenitore Truecrypt sulla scatola di Linux. Tali script vengono chiamati in remoto tramite ssh dal computer Windows:

~ / Bin / backup-mount.sh:

#!/bin/bash
# usage: backup-mount.sh <password>
~deepc/bin/backup-umount.sh
echo "$1" | sudo truecrypt -t --slot=2 -k "" --volume-type=normal --protect-hidden=no /home/deepc/var/backup.tc /home/deepc/mnt

~ / Bin / backup-umount.sh:

#!/bin/sh
sudo truecrypt -d /home/deepc/var/backup.tc

finestre

remote-Backup.cmd:

@echo off
setlocal
set HOME=c:\home
set LC_ALL=de_DE.utf-8
set LC_CTYPE=de_DE.utf-8
set LANG=de_DE.utf-8

rem --iconv=utf-16,iso-88591
ssh -p THESSHPORT -i ../.ssh/id_dsa deepc@theremotehost.com bin/backup-mount.sh THEPASSWORD
rsync -rltvzPm --modify-window=1 --exclude-from=../etc/backup/excludes.txt --chmod=ugo=rwX --delete --delete-excluded --files-from=../etc/backup/files-from.txt -e "ssh -p THESSHPORT -i ../.ssh/id_dsa" --log-file=../tmp/remote-backup.log /cygdrive deepc@theremotehost.com:/home/deepc/mnt
ssh -p THESSHPORT -i ../.ssh/id_dsa deepc@theremotehost.com bin/backup-umount.sh

Inserire questo file batch nell'utilità di pianificazione, ad esempio con una pianificazione giornaliera. Assicurati di regolare nome utente, host remoto, porta ssh, password del contenitore TrueCrypt e, naturalmente, i percorsi di backup. Scusa ma non sono riuscito a rimediarmi di più dopo aver già perso troppo tempo ...

Con questo script Rsync leggerà include ed esclude da due file di testo, ad esempio:

file-from.txt:

/c/Home/
/c/Users/deepc
...

excludes.txt:

Firefox/Cache
Firefox/*.lock
Thunderbird/*.lock
Thunderbird/**/*Junk*
Thunderbird/**/filterlog.html
Thunderbird/**/*.msf
Home/tmp
...

Fatto?

Questa è la risposta alla domanda originale. C'è solo un piccolo problema: i caratteri speciali nei nomi dei file su Windows sono alterati su Linux, con ext2 utilizzato nel contenitore TC su Linux. Ho provato tutte le combinazioni per il --iconvparametro che mi veniva in mente ma senza risultati. Sembra che debba conviverci - a meno che qualche anima coraggiosa abbia letto fino a qui, non conosca la risposta e mi illumini in un commento ;-) (NTFS nel contenitore non è un'opzione)


1

Ho provato a fare qualcosa di simile. Ho dei contenitori Truecrypt sul mio laptop che voglio sincronizzare con una posizione sul mio NAS. Perché voglio una sincronizzazione bidirezionale, sto usando Unison piuttosto che rsync, ma Unison implementa il protocollo rsync, quindi dovrebbe funzionare in modo simile.

Ho usato l'idea di sincronizzare il contenitore TC mentre era smontato e basandomi sul fatto che TC cambia parti del contenitore solo se vengono apportate piccole modifiche ai dati. Tuttavia, il problema che riscontro è che, a causa delle dimensioni del contenitore (20 GB o più), ci vuole ancora un'eternità per sincronizzarsi poiché la destinazione (il NAS) che ha una CPU piuttosto bassa deve fare il checksum dell'intero file contenitore per decidere se è cambiato. Il trasferimento effettivo è abbastanza rapido ma c'è un lungo periodo in cui mastica la CPU.

Quindi, invece, sono passato all'altro approccio su cui deepc ha lavorato, montando il contenitore all'estremità remota e quindi sincronizzando il contenuto. Questo è molto più veloce con una sincronizzazione che richiede nell'ordine di pochi secondi se nulla è cambiato (al contrario di> 45 minuti con l'altro approccio). L'unica idea che mi stava trattenendo da questo approccio originariamente era che non potevo compilare TC sul mio NAS (basato su Arm) ma ho risolto quel problema ora e ora funziona tutto molto bene.

Suppongo che YMMV e "vero" rsync possano essere migliori di Unison in questo senso. Ma andrei con la sincronizzazione del contenuto dei contenitori piuttosto che con i contenitori stessi.


0

Utilizzare l'interfaccia della riga di comando TrueCrypt.

truecrypt --mount file --password=password

dovrebbe funzionare e TrueCrypt -h dovrebbe darti alcune idee. Tuttavia, la password dovrebbe essere archiviata in testo normale nel file rsync. Fai attenzione a non finire nella cronologia bash sulla tua casella di destinazione, altrimenti la sicurezza aggiuntiva svanirebbe - un malintenzionato malintenzionato potrebbe semplicemente chiamare history | grep truecrypt, vedere la tua password e avere i tuoi backup.


Grazie, so come montare un volume TrueCrypt dalla shell (come ho scritto). Si tratta di integrarlo con rsync. Montaggio automatizzato su richiesta.
deepc

0

Se il tuo volume TrueCrypt esiste come file in Windows, perché non copiare semplicemente il file sul computer Linux? Quindi viene crittografato in transito e già crittografato quando arriva a destinazione. Aggiungete a ciò il fatto che non dovete mai usare le credenziali ...

Se la macchina Windows supporta VSS, potresti essere in grado di ottenere una copia anche di un filesystem montato che sia coerente come se spegnessi la macchina tirando la spina.

Se il volume non esiste come file, questo potrebbe non essere così semplice. Inoltre, non so come programmare l'uso di VSS, ma capisco che esegue snapshot da utilizzare durante il backup. (Non so troppo sui dettagli).


Perderesti la possibilità di fare backup incrementali, cosa che offre rsync.
user54114

0

In realtà potrebbe non essere necessario farlo, poiché sembrerebbe che rsync possa eseguire in modo efficiente un backup incrementale di un contenitore TrueCrypt senza dover guardare al suo interno. Nota: suppongo che la motivazione per fare questo sia quella di ottenere i benefici di una copia incrementale, che potrebbe non essere l'intenzione del richiedente ...

Siamo lieti di segnalare che la struttura interna delle immagini del disco TrueCrypt consente di risincronizzarle in modo efficiente in una posizione remota. Ciò significa che dopo il caricamento iniziale (completo) dell'immagine del disco TrueCrypt, i caricamenti successivi trasferiranno in modo efficiente solo le modifiche apportate al filesystem crittografato dall'ultimo caricamento.

Trovata su http://www.rsync.net/resources/howto/windows_truecrypt.html e anche un riferimento in questo thread di commenti: http://digg.com/news/technology/TrueCrypt_Tutorial_Truly_Portable_Data_Encryption

rsync non rinvia di nuovo l'intero file, come avviene normalmente con i file crittografati con gpg, ecc. TrueCrypt modifica solo le parti del file che richiedono modifiche

e

Uso le opzioni --partial e --inplace, e funziona come un incantesimo. Generalmente trasferisce 2-3 GB ogni volta, a seconda di quanto lavoro ho fatto quella settimana ...

Lo testerò presto, commenterò qui con i miei risultati.


Jon, questo è ciò che Slartibatfast ha già suggerito. Anche se a quel tempo pensavamo che l'incremento non avrebbe funzionato con quell'approccio, ma sembra che lo scoprirai presto. Un problema per me, almeno, è che dovrei avere un contenitore TC sul computer per il backup. Uso FDE su questo PC quindi non è molto pratico per me. Ad ogni modo, ho già trovato soluzioni al mio caso d'uso e pubblicherò una risposta con i dettagli.
deepc,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.