用于备份目录的 Shell 脚本

用于备份目录的 Shell 脚本

我正在 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(一个小时内即可学会其有用的功能)。无论您选择哪个版本控制系统:

  1. 创建存储库。
  2. 签入或导入现有文件。
  3. 每当你完成一小部分工作时,就承诺。

答案2

我建议使用源代码管理系统,如 git 或 hg (mercurial)。如果它们是私人项目,BitBucket 有一个很好的免费私人项目存储(鉴于该项目的人员少于 10 人)。 Git 在 Windows 上运行良好,并且有一个名为 EGIT 的 Eclipse 插件,它允许您同步到其他地方的存储库。对于编程,我肯定会推荐这样做而不是编写备份脚本。

相关内容