Rsync: como montar o truecrypt on-the-fly no lado de recepção?

3

A versão curta: como posso manter um backup rsync em um volume TrueCrypt? A parte difícil é montar / desmontar este volume quando necessário para o rsync.

Detalhes

Esta é a minha configuração de backup atual (que funciona razoavelmente bem na maior parte):

  • a origem do backup está no Win7 de 64 bits, o destino é uma caixa Linux remota (Debian)
  • a transferência de dados real é feita pelo rsync via ssh (cwRsync with cygwin)
  • o daemon rsync é iniciado por demanda via ssh

Na caixa do Linux, o backup é protegido apenas por permissões de arquivo. Eu quero aumentar a segurança aqui e colocar o backup em um volume TrueCrypt. Eu posso fundir-montar esse volume manualmente no shell. A questão agora é como eu posso fazer o rsync não apenas abrir uma conexão ssh e iniciar o daemon rsync, mas também montar o volume TrueCrypt antes (e desmontá-lo depois)?

Meu dinheiro está na opção --rsync-path , que pode ser usada para passar uma linha de comando para o ssh - desde que stdin e stdout ainda funcionem da mesma forma. Eu acho que esse comando teria que ser um script de shell. Isso é possível, e como seria o roteiro?

Para referência, aqui está uma citação dessa opção:

--rsync-path=PROGRAM

Use this to specify what program is to be run on the remote machine to start-up rsync. Often used when rsync is not in the default remote-shell's path (e.g. --rsync-path=/usr/local/bin/rsync). Note that PROGRAM is run with the help of a shell, so it can be any program, script, or command sequence you'd care to run, so long as it does not corrupt the standard-in & standard-out that rsync is using to communicate.

One tricky example is to set a different default directory on the remote machine for use with the --relative option. For instance:

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

Esta é a man page completa.

    
por deepc 04.12.2010 / 18:52

5 respostas

1

Enquanto isso, resolvi todos os problemas e tenho uma solução que funciona para mim desde algumas semanas. Caso alguém esteja interessado, estou postando os detalhes aqui. Este artigo de Troy Johnson ajudou ao longo do caminho.

Pré-requisitos

  • Truecrypt instalado no Linux e disponível no caminho
  • um contêiner de TC preparado e disponível em /home/deepc/var/backup.tc
  • cygwin e rsync instalados no Windows e disponíveis no caminho

Linux

Eu fiz dois scripts de shell para montar e desmontar o contêiner Truecrypt na caixa Linux. Esses scripts estão sendo chamados remotamente via ssh a partir da máquina 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

Windows

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 [email protected] 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 [email protected]:/home/deepc/mnt
ssh -p THESSHPORT -i ../.ssh/id_dsa [email protected] bin/backup-umount.sh

Coloque este arquivo em lote no agendador de tarefas, por exemplo com uma programação diária. Certifique-se de ajustar o nome de usuário, o host remoto, a porta ssh, a senha do contêiner Truecrypt e, é claro, os caminhos de backup. Desculpe, mas eu não consegui me limpar mais depois de ter perdido muito tempo ...

Com este script, o Rsync lerá inclusões e exclusões de dois arquivos de texto, por exemplo:

files-from.txt:

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

exclui.txt:

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

Feito?

Isso responde à pergunta original. Há apenas um problema menor: caracteres especiais em nomes de arquivos no Windows são desconfigurados no Linux, com o ext2 sendo usado no contêiner do TC no Linux. Eu tentei todas as combinações para o parâmetro --iconv que eu poderia pensar, mas sem sucesso. Parece que tenho que viver com isso - a menos que alguma alma corajosa tenha lido até aqui, saiba a resposta e me ilumine em um comentário ;-) (NTFS no container não é uma opção)

    
por 26.02.2011 / 22:00
1

Eu tenho tentado fazer algo semelhante. Eu tenho recipientes Truecrypt no meu laptop que eu quero sincronizar com um local no meu NAS. Como eu quero sincronização bidirecional, eu tenho usado o Unison ao invés de rsync, mas o Unison implementa o protocolo rsync, portanto deve ser semelhante em operação.

Eu usei a ideia de sincronizar o contêiner de TC enquanto ele estava desmontado e confiando no fato de que o TC apenas altera as partes do contêiner se um pequeno número de alterações de dados for feito. No entanto, o problema é que, devido ao tamanho do contêiner (20 GB ou mais), ainda demora uma eternidade para sincronizar, pois o destino (o NAS), que tem uma CPU bastante baixa, tem que verificar todo o arquivo contêiner para decidir se isso mudou. A transferência real é bastante rápida, mas há um longo período de antecedência em que ela mastiga CPU.

Então, em vez disso, mudei para a outra abordagem em que o deepc vem trabalhando, montando o contêiner no final remoto e, em seguida, sincronizando o conteúdo. Isso é muito mais rápido, com uma sincronização demorando na ordem de alguns segundos, se nada tiver mudado (ao contrário de > 45 minutos com a outra abordagem). O único pensamento que estava me impedindo dessa abordagem originalmente era que eu não conseguia obter o TC compilado no meu NAS (Arm based), mas resolvi esse problema agora e está tudo funcionando muito bem agora.

Suponho que o YMMV e o 'verdadeiro' rsync podem ser melhores do que o Unison a esse respeito. Mas eu iria com a sincronização do conteúdo dos recipientes em vez dos próprios recipientes.

    
por 12.06.2011 / 00:21
0

Use a interface de linha de comando do truecrypt.

truecrypt --mount file --password=password

deve funcionar e truecrypt -h deve lhe dar algumas idéias. No entanto, a senha teria que ser armazenada em texto simples no seu arquivo rsync. Tenha cuidado para garantir que ele não acabe em algum histórico bash em sua caixa de destino, caso contrário, a segurança adicional desapareceria - um invasor mal-intencionado poderia apenas chamar history | grep truecrypt , ver sua senha e fazer backups.

    
por 04.12.2010 / 19:02
0

Se o seu volume TrueCrypt existe como um arquivo no Windows, porque não simplesmente copiar o arquivo para a máquina Linux? Em seguida, ele é criptografado em trânsito e já criptografado quando chega ao destino. Acrescente a isso o fato de que você nunca precisa usar as credenciais ...

Se a máquina Windows suportar o VSS, talvez você consiga obter uma cópia de até mesmo um sistema de arquivos montado que seja tão consistente quanto seria se você desligasse a máquina puxando o plugue.

Se o volume não existir como um arquivo, isso pode não ser tão fácil. Além disso, não sei programar o uso do VSS, mas entendo que ele faz snapshot para uso ao fazer o backup. (Eu não sei muito sobre os detalhes).

    
por 04.12.2010 / 23:43
0

Na verdade, pode ser desnecessário fazer isso, pois parece que o rsync pode eficientemente fazer um backup incremental de um recipiente TrueCrypt sem ter que olhar dentro dele. Nota: Estou assumindo que a motivação para fazer isso é obter os benefícios de uma cópia incremental, o que pode não ser a intenção do consulente ...

We are happy to report that the internal structure of truecrypt disk images make it possible to efficiently rsync them to a remote location. This means that after the initial (complete) upload of your TrueCrypt disk image, subsequent uploads will efficiently transfer only the changes that have been made to the encrypted filesystem since its last upload.

Encontrado no link e também uma referência neste tópico de comentário: link

rsync will not resend the entire file again, as it normally does with files encrypted with gpg, etc. Truecrypt only changes the portions of the file that require changing

e

I use the --partial and --inplace options, and it works like a charm. Generally transfers 2-3 GB each time, depending on how much work I did that week ...

Vou testar isso em breve, comentarei aqui com minhas descobertas.

    
por 25.02.2011 / 12:07