Linux编写简单的脚本

不管你负责的是商业环境还是家用的,丢失数据是不允许的,为了防止这种事情,那么要做的就是备份。这个时候制作一个存储文件的备份计划绝对不是简单的事情。
归档数据文件
你将linux系统作为一个重要的平台,可以创建一个shell脚本来自动获取特定目录的快照。在配置文件中指定所涉及的目录。
在Linux系统中,归档数据的主要工具是tar命令,tar命令可以将整个目录归档到单个文件中,下面的例子中是通过tar命令来创建工作目录归档文件。
tar -cf archive.tar /home/sap/projects/.
ls -l archive.tar
由于tar归档文件会消耗大量的磁盘空间,最好能够压缩一下该文件,这只需要加一个-z选项就行了。它会将tar归档文件压缩成。gzip格式的tar文件,这种文件也叫做tarball.然后用正确的扩展名来表示,用。tar.gz或者.tgz都行。下面的例子创建了项目目录tarball
tar -zcf archive.tar.gz /home/sap/projects
ls -l archive.tar.gz
现在你已经完成了归档脚本的主要部分。
你不需要为待备份的新目录或者文件修改或者编写新的归档脚本,而是可以借助于配置文件。配置文件应该包括你希望进行归档的每个目录文件。
cat Files_to_Backup
/home/dap/projects
/home/sap/downloads
/home/does_not_exist
/home/sap/documents
可以让脚本读取配置文件,然后将每个目录加到归档列表中,要实现这一点,只需要实现read命令。来读取这一条记录就好了。不过 不用像之前那样,。通过管道将cat命令输出传给while循环,在这个脚本中我们使用exec命令来重定向标准输入(STDIN)。用法如下:
exec < C O N F I G F I L E r e a d F I L E N A M E 注意,我们为归档配置文件使用了一个变量, C O N F I G F I L E 。配置文件中每一条记录都会被读入。只要 r e a d 命令在配置文件中发现还有记录可读,它就在变量中返回一个表示成功的退出状态 0. 可以将它作为 w h i l e 循环的测试条件来读取配置文件中所有记录。 w h i l e [ CONFIG_FILE read FILE_NAME 注意,我们为归档配置文件使用了一个变量,CONFIG_FILE。配置文件中每一条记录都会被读入。只要read 命令在配置文件中发现还有记录可读,它就在变量中返回一个表示成功的退出状态0.可以将它作为while循环的测试条件来读取配置文件中所有记录。 while [ CONFIGFILEreadFILENAME注意,我们为归档配置文件使用了一个变量,CONFIGFILE。配置文件中每一条记录都会被读入。只要read命令在配置文件中发现还有记录可读,它就在变量中返回一个表示成功的退出状态0.可以将它作为while循环的测试条件来读取配置文件中所有记录。while[? -eq 0]
do
[…]
read FILE_NAME
done
一旦read命令到了配置文件的末尾,就会返回一个非零状态码。这时脚本会退出while循环。
在while循环中,我们需要做两件事,首先,必须将目录名加到归档列表中,更重要的是要检查那个目录是否存在!很可能你从文件系统中删除一个目录却忘却了更新归档配置文件。
可以用简单的IF语句来检查目录是否存在与否。如果木存在,它会被加入要归档目录列表FILE_LIST中,否则就显示一条警告信息。if 语句如下。
if [-f $FILE_NAME -o -d $FILE_NAME]
then

if file exists,add its name to the list.

FILE_LIST=“$FILE_LIST KaTeX parse error: Expected 'EOF', got '#' at position 19: …E_NAME" ELSE #̲IF FILE DOOESN'…FILE_NAME,does not exist.”
echo"Obviously ,I will not include it in this archive."
echo"It is listed on line F I L E N O o f t h e c o n f i g f i l e . " e c h o " C o n t i n u i n g t o b u i l d a r c h i v e l i s t . . . " e c h o f i F I L E N O = FILE_NO of the config file." echo"Continuing to build archive list..." echo fi FILE_NO= FILENOoftheconfigfile."echo"Continuingtobuildarchivelist..."echofiFILENO=[$FILE_NO +1] #INCREASE LINE/FILE NUMBER BY ONE.

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Troc_wangpeng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值