Резервное копирование информации с rsync, чтобы генерировать монтируемое изображение?

Перенаправления выполняются через dup семейство системных функций. dup ​​- это сокращение от дублирование , и когда вы это делаете, например:

3>&2

вы дублируете ( dup2 ) файловый дескриптор 2 на файловый дескриптор 3, возможно, закрывая файловый дескриптор 3, если он уже open (что не повлияет на ваш родительский процесс, потому что это происходит в fork , удаленном от дочернего (если это не так (перенаправление на функции оболочки в определенных контекстах), оболочка заставит его выглядеть как бы и делал)).

Когда вы выполните:

1

, он откроет someFile в новом дескрипторе файла (это то, что обычно делает системный вызов open ), а затем dup2 этот файловый дескриптор на 1.

В руководстве говорится, что если один из перечисленных специальных файлов dev занимает место someFile , оболочка пропустит шаг open -on-a-new-fd. и вместо этого перейдите непосредственно к dup2 , вставив соответствующий файловый дескриптор (например, 1 для / dev / stdout и т. д.) в цель (файловый дескриптор с левой стороны перенаправления).

0
03.01.2019, 12:41
1 ответ

Я не знаю ни одного программного обеспечения, способного добиться этого, но вы можете сделать это с помощью loopdevices.

# Create an image file (100 M in the example, change the count to 1000 for 1G, etc)
dd if=/dev/urandom of=/path/to/image.img bs=1M count=100
# Now we use it as a loop device
sudo losetup /dev/loop0 /path/to/image.img
# Format it using the filesystem of your choice (I'm using ext4 here for the example).
mkfs.ext4 /dev/loop0

# Mount that new filesystem.
mkdir /mnt/loop && mount /dev/loop0 /mnt/loop

# Now we can transfer things to the image using rsync (for example /var/log content)
rsync -avz /var/log/ /mnt/loop/

# Unmount the filesystem and remove the loop device.
umount /mnt/loop
losetup -D /dev/loop0

Теперь вы можете переместить файл image.img и использовать его в другом месте (или просто сохранить на удаленном устройстве, как обычный файл ).

Чтобы использовать его, например, на другом компьютере:

# Copy image.img using the tool you want (scp, etc...)
# Mount the image
mount -o loop /path/to/image.img /mnt/loop
# Alter content of the image
# Safely unmount the filesystem
umount /mnt/loop
0
28.01.2020, 04:06

Теги

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