Синхронизировать диски с шифрованием dm?

У меня есть 2 USB-флешки по 8 ГБ каждая:

usb1 = /dev/sdb
usb2 = /dev/sdc

usb1 - это диск с полным шифрованием дм, и в настоящее время я использую usb2 в качестве резервной копии, просто в случае сбоя usb1. Я клонирую usb1 в usb2, используя следующую команду:

dd if=/dev/sdb of=/dev/sdc

Это работает, поскольку я протестировал usb2, и все кажется целым.

Что мне не нравится в этом методе, так это то, что для запуска команды dd требуется около часа.

Как только я однажды клонировал usb1, можно ли синхронизировать usb1 и usb2 без необходимости клонировать весь диск с помощью dd при каждом изменении текстового файла?

Можно ли использовать что-то вроде rsync для синхронизировать 2 USB-флешки, которые являются полностью зашифрованными дисками?

Я могу перевести usb1 на usb2 без расшифровки usb1. Я надеюсь, что существует решение, при котором мне не нужно расшифровывать usb1 и 2, чтобы синхронизировать их. Я надеюсь, что программа синхронизации сможет выяснить различия на двоичном уровне?

3
задан 3 June 2014 в 13:45

3 ответа

Блочные устройства могут синхронизироваться с помощью bdsync — быстрый инструмент синхронизации блочного устройства.
bdsync был создан, чтобы сделать единственную вещь rsync isn’t способный сделать: синхронизируйте блочные устройства.

bdsync "bdsync -s" /dev/LOCDEV /dev/REMDEV > DEV.bdsync  

Это генерирует различный DEV.rsync/dev/LOCDEV и/dev/REMDEV устройств, которые оба локальны.

bdsync --patch  DEV.bdsync /dev/DSTDEV  

сделает устройства синхронизируемыми.

4
ответ дан 3 June 2014 в 13:45

Альтернатива: ecryptfs

Необходимо скорее использовать основанное на файле шифрование как ecryptfs вместо основанного на блоке решения для шифрования в этих случаях.

Преимущества:

  • Учитывая, что Вы используете тот же пароль для обоих устройств, Вы можете rsync Ваши данные, даже когда ecryptfs не смонтирован, и сохраните дополнительное дешифрование и шифрование наверху.
  • Вы только для записи немного больше данных, чем полезная нагрузка, не целый раздел или контейнер, который уменьшает износ элементов памяти.

Недостатки:

  • Шифрование имени файла ограничивает длину имени файла, если бы Ваши файловые системы допускают 255 байтов — как самые современные файловые системы включая FAT и РАСШИРЕНИЕ — предел составил бы 143 байта. Знайте о многобайтовых символах в именах файлов.

Я слышал, что некоторые люди также используют ecryptfs для онлайн-сервисов как Dropbox или Google Drive.

Использование

Установщик Ubuntu использует ecryptfs для установки шифрования домашних папок пользователей, таким образом, Вы, возможно, уже установили ecryptfs-utils пакет. Используя ecryptfs для внешних медиа очень просто, просто выполните следующую команду для соответствующей точки монтирования:

sudo mount -t ecryptfs my_mountpoint/ my_mountpoint/

Это затем запросит следующие опции и наконец смонтирует дополнительный слой к той же точке монтирования или каталогу, который шифрует и дешифрует Ваши данные:

Passphrase: 
Select cipher: 
 1) aes: blocksize = 16; min keysize = 16; max keysize = 32
 2) blowfish: blocksize = 8; min keysize = 16; max keysize = 56
 3) des3_ede: blocksize = 8; min keysize = 24; max keysize = 24
 4) twofish: blocksize = 16; min keysize = 16; max keysize = 32
 5) cast6: blocksize = 16; min keysize = 16; max keysize = 32
 6) cast5: blocksize = 8; min keysize = 5; max keysize = 16
Selection [aes]: 
Select key bytes: 
 1) 16
 2) 32
 3) 24
Selection [16]: 
Enable plaintext passthrough (y/n) [n]: 
Enable filename encryption (y/n) [n]: y
Filename Encryption Key (FNEK) Signature [0000000000000000]: 
Attempting to mount with the following options:
  ecryptfs_unlink_sigs
  ecryptfs_fnek_sig=0000000000000000
  ecryptfs_key_bytes=16
  ecryptfs_cipher=aes
  ecryptfs_sig=0000000000000000
Mounted eCryptfs

При использовании менеджера паролей необходимо сохранить итоговое ecryptfs_* опции наряду с паролем. Обязательно включите шифрование имени файла (FNEK обозначает ключ шифрования имени файла).

Подсказки для использования ecryptfs

  • Нахождение длинных имен файлов

    Следующая команда должна дать Вам список файлов с именами файлов дольше, чем 135 байтов (135 вопросительных знаков, если я не ошибаюсь), и также работает на многобайтовые символы.

    LC_ALL=C find . -type f -name '???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????*'
    

    Это 135, потому что при использовании rsync для передачи файлов, он создает временные файлы с ведущей точкой и 7 конечными символами (.<my_original_filename>.abcdef). Если это не может создать временный файл, это будет жаловаться и продолжать следующий файл.

  • Работа вокруг длинных имен файлов

    Используйте метаданные, если это возможно, для включения всей информации, в которой Вы нуждаетесь или zip-файлы со слишком длинными именами файлов.

    • Я использую следующий шаблон в puddletag для переименования файлов:

      $left($num(%track%, 2) - %title%, 130)
      

      Это 130 из-за расширений файла. Это в настоящее время не работает на многобайтовые символы, но я зарегистрировал ошибку на их bugtracker. как .flac.

4
ответ дан 3 June 2014 в 13:45

Восстановите диски с помощью lvm и затем синхронизируйте их с lvmsync. https://github.com/mpalmer/lvmsync

0
ответ дан 3 June 2014 в 13:45

Другие вопросы по тегам:

Похожие вопросы: