Вопрос или проблема
Мне нужно было сжать/архивировать папку, поэтому я выполнил следующую команду:
gzip -v --rsyncable --fast -r myFolder/ -c > myFolderArchive.gz
…глупо полагая, что это сделает именно то, что я подумал: архив myFolderArchive
и его файлы рекурсивно. У него даже был приятный вывод:
./myFolder/file1 ... 80%
./myFolder/file2 ... 20%
...
Однако, открыв архив позже, я вижу в нем только один файл. Быстрый поиск помог мне понять мою ошибку: GZip (или, думаю, я сам) взял каждый файл, сжало его и поочередно объединяло их в один файл, по сути. Это привело к потере всей структуры файлов/каталогов.
Тем временем я выполнил rm -r
для оригинальной папки. Теперь у меня остался только myFolderArchive.gz
.
Кто-нибудь видит способ взять этот архив и, возможно, восстановить оригинальный набор файлов из содержимого myFolderArchive.gz
, теперь когда все смешано в один GZipped файл?
Я все еще имею доступ к оригинальному диску (на ограниченное время) и мог бы попробовать восстановить хотя бы оригинальную структуру каталогов (файловая система ext4). Технически, содержимое/данные находятся в myFolderArchive.gz
, их просто нужно будет правильно разрезать…
С вашей командой вы сжимаете каждый файл в каталоге и сохраняете вывод в одном файле. Так что вы перезаписываете содержимое, а не конкатенируете его. Команда gzip
сжимает один файл. Вы можете использовать команду для сжатия всего каталога и всех файлов внутри:
tar cvzf myFolderArchive.tar.gz myFolder/
или вы можете использовать zip
zip -r myFolderArchive.zip myFolder/
Ответ или решение
Восстановление утерянной структуры папок и файлов из архива myFolderArchive.gz
Ситуация, с которой вы столкнулись, связана с неправильным использованием команды gzip
, что привело к потере структуры каталогов при сжатии файлов. В следствии выполненной команды были объединены содержимое всех файлов в один архив, сохранив только их данные, но утратив иерархию папок. Вот пошаговое руководство по восстановлению:
Понимание проблемы
При использовании команды:
gzip -v --rsyncable --fast -r myFolder/ -c > myFolderArchive.gz
вы компрессировали каждый файл в папке myFolder
и записали результаты в один файл myFolderArchive.gz
. Gzip в своем стандартном режиме не сохраняет метаданные о директориях и структуре, поэтому восстановление оригинальной иерархии при прямом излечении невозможно.
Порядок действий для восстановления
-
Извлечение содержимого архива:
Первым делом можно извлечь все данные, хранящиеся вmyFolderArchive.gz
. Для этого используйте следующую команду:gunzip -c myFolderArchive.gz > extracted_files
Этот процесс создаст файл
extracted_files
, который будет содержать все данные из оригинальных файлов. Однако структура папок при этом утеряна. -
Реконструкция структура файлов:
Поскольку файлы не содержат информации о своей первоначальной расположенности, вам потребуется сделать следующее:-
Используйте возможность поиска по содержимому, если вы помните имена файлов или частично их названия.
-
Для начала рассмотрите команду
strings
, которая может помочь вам извлечь текстовые указания из двоичных данных:strings extracted_files > potential_file_names.txt
-
Анализируйте полученный файл на наличие имен файлов. Постарайтесь восстановить их при помощи логики или используя места, которые запоминались.
-
-
Обратное извлечение данных:
Если вы сумели извлечь названия файлов, создайте директории, соответствующие их изначальному расположению. После этого, используяsplit
или другие подходящие инструменты, вы можете вручную извлекать и создавать файлы по их содержимому изextracted_files
. -
Восстановление удалённых данных (при возможности):
Если у вас есть доступ к оригинальному диску и у вас есть опыт работы с файловыми системами, вы можете воспользоваться утилитами для восстановления данных, такими какtestdisk
илиphotorec
. Например, для использованияtestdisk
, проделайте следующее:- Запустите
testdisk
и выполните сканирование вашего диска, чтобы найти удаленные файлы и директории. - Следуйте инструкциям утилиты для восстановления файлов, если это возможно.
- Запустите
Итоги
Ваша ситуация подчеркивает важность понимания инструментов для работы с архивами. Для последующего архивирования директории рекомендуется использовать комбинированные утилиты, которые сохраняют структуру директорий, такие как tar
или zip
. Например:
tar cvzf myFolderArchive.tar.gz myFolder/
или
zip -r myFolderArchive.zip myFolder/
Эти команды позволяют создать архив с сохранением всех иерархий каталогов и удобно использовать полученные архивы в будущем. Надеюсь, это руководство поможет вам успешно восстановить необходимые данные!