Назад | Перейти на главную страницу

Создайте мою команду bash, чтобы избавить меня от боли

Хорошо, краткая предыстория. Я случайно rm -rf мой внешний жесткий диск USB. Сейчас я использую Photorec для восстановления файлов. (Я случайно удалил 800 ГБ. Это мои личные файлы. В основном это были медиафайлы, но у меня были и другие вещи, такие как pdf, xls, jpg, doc и т. Д.)

Итак, я подключил еще один внешний жесткий диск с 350 ГБ, чтобы начать восстановление, поскольку это все, что у меня есть. Сейчас файлы сбрасываются, и я знаю, что скоро исчерпаю их.

Мне нужна помощь в автоматизации некоторых операций восстановления. Процесс восстановления - выгрузка файлов по папкам. Каждый начинается с recup_dir.x

В каждой из этих папок есть мои файлы. Прямо сейчас я хочу сделать что-то в этом роде в каждой папке; перейдите к каждой папке и скопируйте все файлы pdf, doc, xls, jpg на мой comp hd и удалите их с другого внешнего жесткого диска, чтобы я мог заснуть и, надеюсь, он по крайней мере восстановит большинство необходимых файлов. Может кто-нибудь помочь :(

cp *.docx /home/me/Desktop/docx/ || cp *.doc /home/me/Desktop/docx/ || cp *.xls /home/me/Desktop/xls/ || cp *.pdf /home/me/Desktop/pdf/ || cp *.jpg /home/me/Desktop/jpg/ && rm  *.doc *.docx *.pdf *.jpg *.xls

Я бы никогда, никогда не удалял файлы, пока не убедился, что восстановление файла прошло успешно. Особенно при написании сценария опечатка в сценарии может удалить все.

Лучше протереть диск после завершения восстановления.


Тем не менее, я бы посмотрел на использование rsync, это должно быть несколько безопасным вариантом. У него есть возможность --remove-исходные файлы что, вероятно, именно то, что вы ищете. страницы руководства можно найти Вот.

Однако вы должны подумать о том, что произойдет, если rsync начнет копировать файл во время его восстановления / копирования на диск. Опять же, я считаю, что вероятность ошибки слишком высока.

более безопасный способ

#!/bin/bash
rsync --progress -gioprtv <recoverydir>/*.doc* /home/me/Desktop/docx/ && \
rsync --progress -gioprtv <recoverydir>/*.xls /home/me/Desktop/xls/ && \
rsync --progress -gioprtv <recoverydir>/*.jpg /gome/me/Desktop/jpg/ && \
rsync --progress -gioprtv <recoverydir>/*.pdf /gome/me/Desktop/pdf/; \

rsync проверяет файлы от начала до конца, хешируя их, приведенное выше должно дать вам представление о процессе индивидуальной копии, а также, чтобы вы не сидели и бездельничали.

&& гарантирует, что он будет прогрессировать только в том случае, если предыдущий шаг завершился успешно, это позволяет вам вернуться и отредактировать сценарий, если что-то пойдет не так, и повторить процесс.

Поместите его в файл, например resovery.sh chmod + x, и вперед

НИКОГДА удаляйте исходные файлы, пока у вас не будет возможности просмотреть их.

Еще одна мысль, вы пишете, что большая часть вашего материала - это носители, но вы не упоминаете, что хотите восстановить эти файлы? Если это так, для меня имеет смысл полностью изменить логику и вместо этого удалить эти файлы, чтобы освободить место для файлов, которые вы хотите сохранить.

Если да, вы можете поиграть с чем-то вроде этого. ОБРАТИТЕ ВНИМАНИЕ, ЧТО ЭТО МОЖЕТ УДАЛИТЬ ВСЕ ВАШИ AVI-ФАЙЛЫ В ТЕКУЩЕЙ ПАПКЕ И ВСЕ ПОДПАПКИ !!

find . -name "*.avi"                      - verify 
find . -name "*.avi" -exec rm -f {} \;    - delete