У меня есть корпус на 12 ТБ, заполненный данными (ext3). Я хотел бы сделать его копию на отдельных дисках емкостью 3 ТБ, каждый из которых доступен для чтения сам по себе (без RAID или связывания). В идеале я бы хотел, чтобы этот процесс выдавал некоторый индекс того, какие файлы на каком диске находятся, но это не обязательно. Конечным результатом должны быть читаемые файлы на диске в исходной структуре каталогов, а не архивный файл. Разделение каталогов (дублирование структуры каталогов) по томам - это нормально.
Не все диски емкостью 3 ТБ монтируются одновременно (и не могут быть подключены), поэтому мне нужно что-то, что позволит мне приостановить копирование для переключения дисков. Я настоятельно предпочитаю решение, которое не требует от меня выяснения, какие файлы находятся на каком диске, или отслеживания того, что было скопировано.
Есть ли существующий пакет, который это сделает?
Я не знаю существующего пакета, который сделает это, но вот полностью непроверенный скрипт без проверки ошибок, который может работать:
#!/bin/sh
SRC=/foo
DST=/bar
IDX=/tmp/CONTENTS
DISK_ID=`uuidgen`
echo "$DISK_ID" > $DST/disk_id
cd $SRC
find . -type f | while read FILE; do
FILE_SIZE=`stat -c '%a' "$FILE"`
FREE_DST=`stat -c '%a' "$DST"`
if [ $FREE_DST -lt $FILE_SIZE ]; then
while [ $FREE_DST -lt $FILE_SIZE ]; do
read -p "Please mount a new disk at $DST and hit enter:"
FREE_DST=`stat -c '%a' "$DST"`
done
DISK_ID=`uuidgen`
echo "$DISK_ID" > $DST/disk_id
fi
DST_DIR=`dirname "$FILE"`
DST_DIR="$DST/$DST_DIR"
[ -d "$DST_DIR" ] || mkdir -p "$DST_DIR"
cp -p "$FILE" "$DST_DIR"
echo "$DISK_ID $FILE" >> $IDX
done
rsync кто-нибудь? создайте несколько папок, по одной для каждого диска, переместите данные, которые будут занимать один диск, затем просто выполните проверку с помощью rsync, а не перемещайте данные.
проверить страницу руководства
Вероятно, это выходит за рамки того, что вы ищете, но бесплатная версия Unraid могла бы это сделать. Вы можете просто назначить 3 диска как данные без четности. Установите половодье на «наполнение» и настройте уровни разделения в соответствии с вашими потребностями.