文件备份的几个简单命令
我们知道,备份文件是一件很重要的事情,我在《优秀程序员的十个习惯》一文向大家说明了备份文件应该是程序员最基本的一个习惯。本文主要是向大家介绍一些在备份文件和数据时能用得到的一些示例,当然,这些示例主要是通过一些命令行或是脚本来实现的。这就是用命令行和脚本的优势,你可以实现比较灵活和自动的定制。
本文中的脚本和示例都是主要是通过zip, tar, ftp, wget和shell脚本来完成。在Linux下,你可以什么也不用安装任何程序,但在Windows下,你需要安装zip 和wget这三个命令(在本文的最后有这三个命令的链接,你可以去下载)
几个小脚本
1)首先,我们来看一下,如何给某目录打个zip包。
Windows:
zip -r backup.zip "c:\yourfolder"
Linux: (打包自己的home目录)
tar -czvf ~/backup.tgz --exclude backup.tgz ~/
2)接下来,我们再来看一下,创建一个带有时间文件名的压缩包,并上传到远程主机的一个例子。
Windows
:: cmd 脚本
:: 压缩包文件格式`backup-mm-dd-yyyy.zip'
:: 注意:%dir% 被引号括起是怕目录名中有空格
@echo off
set host=ftp.yourhost.com
set user=username
set pass=password
set file=backup-%date:~4,2%-%date:~7,2%-%date:~10%.zip
set dir="yourfolder"
zip -r %file% %dir%
> script.ftp echo open %host%
>> script.ftp echo %user%
>> script.ftp echo %pass%
>> script.ftp echo bin
>> script.ftp echo put %file%
>> script.ftp echo bye
ftp.exe -d -s:script.ftp > backup.log
del script.ftp
Linux
#!/bin/bash
host="ftp.yoursite.com"
user="username"
pass="password"
file="backup-$(date '+%m-%d-%Y').tgz"
dir="$HOME"
tar -cvzf $file $dir
ftp -vin <ftp.log
open $host
user $user $pass
bin
put $file
close
bye
EOF
3)最后,我们来看一看,通过wget命令来下载备份好的压缩包。
Windows
:: cmd 脚本
:: 注意: '^' 是一个命令的换行符
set host="ftp://ftp.your.host.com"
set user="flintstone"
set pass="yabbadabbadoo"
wget %host% --ftp-user=%user% --ftp-password=%pass% ^
--mirror --output-file=backup.log --passive-ftp
Linux
#!/bin/sh
# 注意 '\' 是命令的换行符
host="ftp://ftp.your.host.com"
user="username"
pass="password"
wget $host --ftp-user=$user --ftp-password=$pass \
--mirror --output-file=backup.log --passive-ftp
相关工具
Info-Zip: http://www.info-zip.org/
GNU Tar: http://www.gnu.org/software/tar/
GNU Wget: http://www.gnu.org/software/wget/
几点注意
上面的那几个命令比较简单,只是表明一些备份的脚本思路。在实际过程当中,基本上也是这样,下面是几点注意。
1)给备份文件打包压缩这是第一步,你可以选用其它的压缩程序。如bzip。
2)文件名上有时间信息比较容易归档。有时候,文件包比较大,还需要对大文件进行分割(一般的压缩软件都支持文件分割)。
3)使用wget和ftp可能会有用户名密码泄露的问题,使用ssh拷贝文件会比较好。
4)源代码最好还是使用版本控制工具备份(比如Subversion或CVS)
5)备份脚本可以放在计划任务(linux是corn)中以实际自动化。
6)以上的方法一般说来比较适用于全部备份,而不是增量备份。
转载于酷壳CoolShell 无删改 仅以此纪念陈皓(左耳朵耗子)
目录 前言说明基本观点对于敏捷方法论的观点对于ThoughtWorks咨询师的批评观点关于ThoughtWorks和InfoQ给我的信 前言说明 之所以用了“再”,是因为…
看下面代码,为什么使用“错误的处理”那种情况。明明所有hasStock很快执行完毕并且返回了结果,但是会在判断没货之间,每个判断之间会卡几秒,不是已经有结果了吗。。。 GPT4…
K Nearest Neighbor算法又叫KNN算法,这个算法是机器学习里面一个比较经典的算法, 总体来说KNN算法是相对比较容易理解的算法。其中的K表示最接近自己的K个数据…