我希望编写一个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,因此执行这些操作需要很长时间。
我如何才能从备份中仅恢复源代码(而不是整个目录)并确保每个文件都还原到每个文件所属的特定目录?
答案 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