![用于备份目录的 Shell 脚本](https://linux22.com/image/26697/%E7%94%A8%E4%BA%8E%E5%A4%87%E4%BB%BD%E7%9B%AE%E5%BD%95%E7%9A%84%20Shell%20%E8%84%9A%E6%9C%AC.png)
我正在 Windows 上运行 Eclipse,并且希望自动备份所有项目的 src 目录。我安装了 cygwin 并尝试制作一个简单的备份脚本,但在正确指定目标文件名时遇到问题。备份应位于脚本的当前目录中。
#!/bin/bash
for f in /cygdrive/c/Documents\ and\ Settings/USERNAME/My\ Documents/Eclipse\ Workspace/*
do
echo "in folder \"$f\""
cp -a "$f"/src/ ./????.bak
done
我想 ????是项目文件夹(不是绝对路径)。谢谢。
答案1
我认为您正在寻找的外壳结构是dirname
。
for f in /cygdrive/c/Documents\ and\ Settings/USERNAME/My\ Documents/Eclipse\ Workspace/*
do
cp -a "$f/src/" "./$(dirname "$f").bak"
done
但实际上,这不是一个好的备份解决方案。每次运行副本时,之前的状态都会被删除。而且它根本不提供任何历史记录。使用版本控制。使用任何东西,甚至CVS(一个小时内即可学会其有用的功能)。无论您选择哪个版本控制系统:
- 创建存储库。
- 签入或导入现有文件。
- 每当你完成一小部分工作时,就承诺。
答案2
我建议使用源代码管理系统,如 git 或 hg (mercurial)。如果它们是私人项目,BitBucket 有一个很好的免费私人项目存储(鉴于该项目的人员少于 10 人)。 Git 在 Windows 上运行良好,并且有一个名为 EGIT 的 Eclipse 插件,它允许您同步到其他地方的存储库。对于编程,我肯定会推荐这样做而不是编写备份脚本。