shell脚本及其基本应用介绍:如何设置我的计算机每天对特定文件夹进行存档?

shell脚本及其基本应用介绍:如何设置我的计算机每天对特定文件夹进行存档?

我遇到了一种情况,我需要授予某些人访问我的保管箱文件夹的权限。到目前为止,他们已经删除了装满重要数据的巨大文件夹。显然,他们的计算机技能需要做一些工作。值得庆幸的是 dropbox 网站上有恢复功能。但gui看起来并不是超级强大,我担心这些人会永久删除一些东西。

我一直在制作该文件夹的 zip 存档,并每天将其保存在我的本地计算机上。我已经恢复了在 dropbox 恢复 gui 上找不到的文件。

但我担心我会忙或懒而忘记存档。所以我认为这是学习基本的自动化 shell 脚本编写的好机会。

我怎样才能设计一个脚本

  1. 在启动时运行
  2. 提示我(我不知道如何)查看是否要制作特定目录的 zip 存档
  3. 这样做,并将其另存为/path/to/archives/<date>

??

我目前只知道最少的 bash(cdlsssh等),因此如何做这样的事情的工作示例将是将来做其他有用的类似事情的跳板。

我在 thinkpad x230 上运行 Ubuntu。

答案1

你应该使用crontab

例子:

如果您希望有一个名为tarBackup.sh每天凌晨 5 点运行的脚本,您的crontab条目将如下所示。

cronjob首先,通过运行以下命令安装:

crontab -e

附加以下条目:

0 5 * * * xterm -e /path/to/tarbackup.sh

保存并关闭文件。

你的tar备份.sh

tarBackup.sh应该有以下几行。

#!/bin/bash
echo "Do you wan to backup?(yes/no)"
read input
if [ "$input" == "yes" ] 
then
    tar -cvf dir.tar dir1 dir2
else
    echo "K sir,I won't backup anything"
fi

[示例,根据需要编辑 tar 命令]

crontab 的一般语法如下。

1 2 3 4 5 /path/to/some/command

在哪里

1: Minutes 0-59
2: Hours in 24 hours format
3: Day 0-31
4: Month 0-12
5: Day of the week 0-7
/path/to/some/command - Command or script name to schedule

答案2

我不知道你为什么要使用压缩文件进行备份。

如果您使用 rsync,您将只能备份新文件和更改的文件(已删除的文件不受影响)。

例子:

#!/bin/bash
# see http://ss64.com/bash/rsync_options.html
DROPBOX=~/Dropbox/
BACKUP=~/dropboxbackup

rsync -rvt $DROPBOX $BACKUP

标志:

r - 递归

v-详细

t - 保存时间

相关内容