Как файловая система может быть скопирована точно, как?

Каждый раз, когда Вы удаляете использование файла rm команда, данные файла никогда не удаляются. Другими словами, блоки в файловой системе, содержащей данные, все еще там.

То, что происходит, - когда Вы работаете rm команда, система отмечает inode, принадлежащий тому файлу, столь же неиспользованному и блоки данных того файла также как неиспользованный (но не вытер). Однако ext3 нули большинство полей в inode, когда файл удален.

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

Подробнее: Структура Inode, Как удаление файла работает

10
23.05.2017, 15:40
5 ответов

Я обычно использую одну из следующих альтернатив:

  • rsync -aHAX (добавьте v для многословия), удостоверяется, что Вы сохраняете любую структуру ссылки и x-attrs в целевой папке при копировании. Не забывать a средства архивируют, и уже сохраняет время, владение и полномочия.
  • Простой tar cvf (не сжимайтесь, чтобы сэкономить время, просто смолить их), то, что я использую, если первый не встречает то, в чем я нуждаюсь по любой причине, и у меня нет времени, но я всегда пробую первый.

Чтобы проверить, что все пошло, как это должно, можно работать diff -r <folder1> <folder2> впоследствии, если Вы хотите.

12
27.01.2020, 20:00
  • 1
    Это добилось цели! Я также просто должен был удостовериться, что устройство, которое я загружал (через NFS) было выключено и не способное получить доступ к файловой системе, в то время как копия продолжалась. –  TopGunCoder 18.10.2013, 15:14
  • 2
    , клиенты NFS с доступом для чтения-записи могут иногда приправлять вещи! –  bayindirh 18.10.2013, 18:02
  • 3
    Это не скопирует по редким файлам без-S. Это может быть частью du -s различие. Я использовал rsync -axXSAH скопировать все.-x только скопирует в файловой системе и не файлах, смонтированных от другой файловой системы. –  Victor Roetman 19.05.2016, 23:45
  • 4
    Что относительно - числовые идентификаторы? –  0x2207 31.01.2017, 21:16
  • 5
    @0x2207 только полезно, когда пользователь имеют различные числовые идентификаторы в различных системах (например, пользователь hbayindir находится в обеих системах, и имеет UID 1000 на источнике и 1536 на месте назначения). Я никогда не должен был использовать ту опцию, так как я должен сохранить настоящего владельца, не UID и GID. Если пользователь не присутствует или источник или место назначения, числовой идентификатор используется в качестве нейтрализации. –  bayindirh 01.02.2017, 07:35

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

$ cd /
$ mkdir backups

$ tar -cvpf /backups/fullbackup.tar --directory=/ --exclude=proc --exclude=sys \
     --exclude=dev/pts --exclude=backups .

После того как Вы скопировали корневую папку в новую систему, необходимо будет обновить личинку, прежде чем она загрузится.

$ grub-install --recheck /dev/sdX (Where X is the partition number)
$ update-grub
4
27.01.2020, 20:00
  • 1
    +1 я думаю подсказка, находится в неудавшемся сообщении загрузки в OP, и это обращается к нему. –  msw 18.10.2013, 03:57
  • 2
    Как оказалось, что-то очень похожее на это работало. Я имел дело с файловой системой (FS) на моей машине, которую я должен был скопировать. Все, что потребовалось, было для меня к tar c затем tar x это. Строка над заголовком, хотя должен был удостовериться, что моя машина была прочь, так как я загружал ее с помощью FS, который был локальным для моей машины, но удаленным к устройству, которое я загружал (я запускал устройство через NFS) –  TopGunCoder 18.10.2013, 15:13
  • 3
    grub-install: error: embedding is not possible, but this is required for cross-disk install. –  Vitaly Zdanevich 28.02.2018, 02:28

Используя du сравнить папки по сути неприятно. Если Вы хотите действительно выдержать сравнение, 2 каталога, базирующиеся просто на их размерах затем, используют du как это:

$ du -sh --apparent-size <dir>

Этот переключатель сообщит о каталогах acutual размер по сравнению с количеством дискового пространства, которое это использует при хранении на носителе физического диска. Диски организованы в блоки, и файлы записаны в эти блоки. Если файлу только будет нужен БЛОК + 1 из пространства, то это использует 2 ценности БЛОКОВ пространства, и это что du обычно отчеты. Помните, что название инструмента является использованием диска!

Учитывая Вы имеете дело с тем, что походит на всю файловую систему, которую я был бы склонен использовать dd сделать точную копию раздела, что каталог идет

$ dd if=/dev/sda1 of=/srv/boot.img

Можно затем использовать это boot.img восстановить раздел везде, где Вы хотите.

$ dd if=/srv/boot.img of=/dev/sdb1
2
27.01.2020, 20:00
  • 1
    du также сообщит о размере относительно диска (так редкие файлы, и жесткие ссылки занимают меньше места). Например, du -sh /var дает 21G, но du -sh --apparent-size /var дает 209G в моей системе. –  Victor Roetman 19.05.2016, 23:48

Вы могли попробовать FSArchiver. Это - преемник подобного partimage, который теперь не сохраняется. Я использовал и partimage и FSArchiver в прошлом, и они оба работали хорошо. Насколько я знаю, они оба делают копии файловой системы, которая является максимально близко к идентичному оригиналу. Я думаю, что FSArchiver немного более мощен, чем partimage. Например, это работает с ext4, в то время как partimage не делает. См. сравнительную таблицу FSArchiver/partimage.

2
27.01.2020, 20:00

Это зависит немного от того, под чем Вы подразумеваете "идентичный".

  • Просто выполнение rsync был бы прекрасен большую часть времени. Иногда Вы хотите использовать tar упаковать все в файле и извлечь его в другом месте.
  • Если Вы хотите клон полной файловой системы, можно использовать dd скопировать саму целую файловую систему.

Если Вы имеете, любой означает отлаживать Ваше устройство, пытаться узнать, что точно является проблемой, почему это в настоящее время не убегает.

0
27.01.2020, 20:00

Теги

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