Linux Shell脚本:在保持目录位置的同时备份和还原文件

时间:2011-05-20 18:36:27

标签: linux bash shell scripting backup

我希望编写一个Linux shell脚本,以便在我的项目文件夹(。c,.cpp,.java等)中执行所有源代码的备份和恢复 < / p>

我的脚本删除了所有这些源代码文件,我希望能够在需要时轻松恢复文件。

以下是我现在正在做的事情:

#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

项目大约600MB,因此执行这些操作需要很长时间。

我如何才能从备份中仅恢复源代码(而不是整个目录)并确保每个文件都还原到每个文件所属的特定目录?

2 个答案:

答案 0 :(得分:4)

考虑使用tar:它会记住有关文件的所有内容,包括路径,权限和日期。如果源代码在几个目录中,则可以从tar文件中按名称提取这些directiories。

答案 1 :(得分:2)

考虑使用版本控制。它会记住有关文件的所有信息,包括路径,权限,日期和以前的修订版。这不仅可以防止灾难恢复,还可以使您成为更好的开发人员(出于各种原因)。

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