Linux Shell Script: резервное копирование и восстановление файлов с сохранением расположения каталога - PullRequest
1 голос
/ 20 мая 2011

Я хочу написать сценарий оболочки Linux для резервного копирования и восстановления всего исходного кода в папке моего проекта (.c, .cpp, .java и т. Д.)

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

Вот что я делаю сейчас:

#copy the entire directory to a backup folder
cp -r $CLEANUP_PATH $BACKUP_PATH

#delete the project and copy from backup to restore source code
rm -rf $CLEANUP_PATH
cp -r $BACKUP_PATH $CLEANUP_PATH

Проект занимает около 600 МБ, поэтому выполнение этих действий занимает много времени.

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

Ответы [ 2 ]

4 голосов
/ 20 мая 2011

Рассмотрите возможность использования tar: он запоминает все о файлах, включая пути, разрешения и даты.Если ваш исходный код находится в нескольких каталогах, вы можете извлечь эти директории по имени из файла tar.

2 голосов
/ 21 мая 2011

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

git init .
git add `find . -type f | egrep '\.(cpp|c|java)$'`
git commit -m "initial version"

Конечно, предполагается, что в каталоге есть файлы, которые вы не хотите сохранять / сохранять. Если вы хотите сохранить все (без двоичных файлов / библиотек / других сгенерированных или генерируемых файлов, пожалуйста!), Тогда вы можете git add .

После того, как вы поработаете, проверьте изменения

git status
git commit -a -m "Descriptive comment about changes"

Вы также можете создавать клоны из репозитория git на случай, если вы удалите каталог. Вне системы клоны в случае удаления машины.

git clone ssh://hostname/path/to/repository
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...