У меня есть 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, чтобы синхронизировать их. Я надеюсь, что программа синхронизации сможет выяснить различия на двоичном уровне?
Блочные устройства могут синхронизироваться с помощью 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
сделает устройства синхронизируемыми.
Необходимо скорее использовать основанное на файле шифрование как ecryptfs вместо основанного на блоке решения для шифрования в этих случаях.
Преимущества:
Недостатки:
Я слышал, что некоторые люди также используют 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 обозначает ключ шифрования имени файла).
Нахождение длинных имен файлов
Следующая команда должна дать Вам список файлов с именами файлов дольше, чем 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
.
Восстановите диски с помощью lvm и затем синхронизируйте их с lvmsync. https://github.com/mpalmer/lvmsync