讲道理网上很多教程的,为啥我就还是要写呢?【其实我很懒的】因为我——就要!
首先是准备一个 Dropbox 账号,这个 hin 简单的,推荐使用 google 邮箱注册,注册完成后打开 Apps 界面。
点击 Create App 按钮,创建一个 App:

这里注意 app 的名字是任意的,当然啦,dropbox 不允许出现相同的名字,所以别人注册的名字就用不了啦,这里推荐使用自己网站的域名进行 create。
创建好后进入自己的 app,如下图,点击画圈的图标,也就是 Generated access token:

当然这一步可以暂缓,先 SSH 进入自己的 VPS,可以通过 putty 和 Xshell 进入(em……如何进入就不用我说了吧,我才不是就蹭蹭的那种呢)
使用代码获取 Dropbox Uploader,这里提供两种,我是通过第二种获得的,不要问我为什么,我——不!知!道!
git clone https://github.com/andreafabrizi/Dropbox-Uploader.git
curl "https://raw.githubusercontent.com/andreafabrizi/Dropbox-Uploader/master/dropbox\_uploader.sh" -o dropbox\_uploader.sh
在执行安装完 Dropbox 后会自动弹出请求输入 access token 的语段,这个时候把刚刚的 access token 输入进去并且 y 确定就好了(如果没有弹出来……自己 google 去……抓头)
然后赋予 dropbox_uploader 权限(大概就是为 sh 文件增加可执行权限),这样:
chmod +x dropbox\_uploader.sh
可以通过./dropbox_uploader.sh info 查看自己刚才绑定的信息,如果提示错误,试试在前面加 sh 空格再执行。
到了这一步,我们的所有准备工作就已经准备完毕(雾)
不不,我们还要安装 7zip 压缩软件,因为一般建站传上去的文件名称中或多或少都会不可避免的有一些汉字存在,而在 Linux 环境下只有 rar 和 7z 格式才支持中文编码,而 rar 又是收费的,所以我推荐 7z,这里执行以下命令进行安装:
yum install p7zip
我是 centos 系统啦,所以是这个命令,如果是 Debian 的话可能是使用:apt-get install p7zip,如果以后需要卸载 7zip,使用 yum -y remove p7zip 试试看。
好了,到了这一步,我们的所有准备工作就已经准备完毕 w
下面开始吹逼——(/手动滑稽)
经过尝试,我使用以下代码(不要问我怎么获得的,不会 google 啊,口亨口即):
7za a -t7z -r /tmp/backup.7z /data/www/sirongzi.xyz:9999 -mx1
这个意思就是把/data/www/sirongzi.xyz
目录下的所有文件使用低压缩方式添加到/tmp/backup.7z 压缩包中。然后利用刚才安装的 dropbox_uploader 进行上传:
./dropbox\_uploader.sh upload /tmp/backup.7z /backup/backup.7z
大概意思就是使用 dropbox_uploader 将位于/tmp/backup.7z 的文件上传到绑定的 dropbox/app/backup 目录下并命名为 backup.7z 这样。
然后删除刚才的压缩包:
rm -f /tmp/backup.7z
-f 就是不提示直接删除,这样。
接着是 SQL 数据库:
-
[uname] 数据用户名
-
[pass] 数据密码
-
[dbname] 数据库名称
-
[backupfile.sql] 备份文件
导出数据:
mysqldump —opt -u [uname] -p[pass] [dbname] > [backupfile.sql]
注意 opt 前面的两个—是没有空格的,然后-p 后面的密码也是不加空格的。
需要导出压缩的数据库可以这样:
mysqldump —opt -u [uname] -p[pass] [dbname] | gzip -9 > [backupfile.sql.gz]
如果以后需要使用这个文件进行恢复操作的话可以执行以下命令:
mysql -u [uname] -p[pass] [db_to_restore] < [backupfile.sql]
然后便是将导出的数据库文件上传到 dropbox,标准语句是这样:
./dropbox_uploader.sh upload [sourcefile] [remotefile]
我的是这样:
mysqldump —opt -u 数据库用户名 -p 数据库密码 需要导出的数据库名称 > backupfile.sql
./dropbox_uploader.sh upload backupfile.sql /backup/backupfile.sql
大概意思就是……这么简单自己看……(懒)
然后作为一个强迫症,还是要删除刚才导出的数据库文件的:
rm -f /root/backupfile.sql
这里为啥我知道这个被我命名为 backupfile.sql 的文件在 root 下面呢,这里我使用了 find 命令:
find / -name "backupfile.sql"
大概意思就是从根目录下查找 backupfile.sql 并给出所在位置。
铛铛铛铛!完成!(大雾)
喂喂,说好的 jo 本呢。(憋打我,听我说完)
最后将上面你自己编写的语句按顺序编写到 notepad++里面,并且每个语句间进行提行并将文档转化为 UNIX 格式(具体操作编辑-文档格式转化-转化为 UNIX 格式,这里感谢@卡布)

然后我是通过 FileZilla 软件将命名为 backup.sh 的 jo 本上传到/root/backup.sh(这里就不说咋个弄了,麻烦……)
一样的赋予 backup.sh 执行权限:
chmod +x /root/backup.sh
到这里可以尝试一下该 shell 脚本是否能正常运行:
sh ./backup.sh #我必须加sh不知道为什么……
最后利用 crontab 命令添加定时任务:
crontab -e
打开 crontab 文件,注意这里是使用的 VIM 文字编辑工具,大概需要的操作如下(以下是一些废话):
vim 简介:Linux 世界几乎所有的配置文件都是以纯文本形式存在的,而在所有的 Linux 发行版系统上都有 vi 编辑器,因此利用简单的文字编辑软件就能够轻松地修改系统的各种配置了,非常方便。vi 就是一种功能强大的文本编辑器,而 vim 则是高级版的 vi,不但可以用不同颜色显示文字内容,还能进行诸如 shell 脚本、C 语言程序编辑等功能,可以作为程序编辑器。
vim 有三种模式:一般模式、编辑模式、命令模式。
下面是一些可以在一般模式中使用的命令:
-
x:删除一个字符
-
u :撤销一个操作(相当与 Ctrl+z)
-
dd :删除一行内容
-
dw :删除一个单词
-
yy :复制一行内容
-
yw :复制一个单词
-
p :粘贴一个之前删除或复制的行或者单词
-
e :跳到下个单词(LCTT 译注:词尾)(比单纯用方向键更快)
-
r :替换一个字母(按 r ,松开,然后再按新字母)
(当然我都不用……)
按 i 键(当然用 a、o 或者 r 也可以,大小写区分,具体区别见下)进入编辑模式,这时可以用←、→(不是表情!)移动光标。
①进入插入模式(6个命令)
【i】 从目前光标所在处插入
【I】 从目前光标
【a】 从当前光标所在的下一个字符处开始插入
【A】 从光标所在行的最后一个字符处开始插入
【o】 英文小写字母o,在目前光标所在行的下一行处插入新的一行并开始插入
【O】 英文大写字母O,在目前光标所在行的上一行处插入新的一行并开始插入
②进入替换模式(2个命令)
【r】 只会替换光标所在的那一个字符一次
【R】 会一直替换光标所在字符,直到按下\[ESC\]键为止
【\[ESC\]】 退出编辑模式回到一般模式
③一般模式切换到命令行模式
【:w】 保存文件
【:w!】 若文件为只读,强制保存文件
【:q】 离开vi
【:q!】 不保存强制离开vi
【:wq】 保存后离开
【:wq!】 强制保存后离开
【:! command】 暂时离开vi到命令行下执行一个命令后的显示结果
【:set nu】 显示行号
【:set nonu】 取消显示行号
【:w newfile】 另存为
所以,我的操作是,i→编辑→
(惊不惊喜意不意外 w)偏题了,回到 crontab 命令:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
\# For details see man 4 crontabs
\# Example of job definition:
\# .---------------- minute (0 - 59)
\# | .------------- hour (0 - 23)
\# | | .---------- day of month (1 - 31)
\# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
\# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
\# | | | | |
\# \* \* \* \* \* user-name command to be executed
举个栗子吧——
每天早上 6 点 0 6 * * * echo “Good morning.” >> /tmp/test.txt //注意单纯 echo,从屏幕上看不到任何输出,因为 cron 把任何输出都 email 到 root 的信箱了。
每两个小时 0 */2 * * * echo “Have a break now.” >> /tmp/test.txt
晚上 11 点到早上 8 点之间每两个小时和早上八点
0 23-7/2,8 * * * echo “Have a good dream” >> /tmp/test.txt
每个月的 4 号和每个礼拜的礼拜一到礼拜三的早上 11 点
0 11 4 * 1-3 command line
每小时执行/etc/cron.hourly 内的脚本
01 * * * * root run-parts /etc/cron.hourly
每天执行/etc/cron.daily 内的脚本
02 4 * * * root run-parts /etc/cron.daily
每星期执行/etc/cron.weekly 内的脚本
22 4 * * 0 root run-parts /etc/cron.weekly
每月去执行/etc/cron.monthly 内的脚本
42 4 1 * * root run-parts /etc/cron.monthly
注意: “run-parts”这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名。
上面抄的……我的是很简单的这样(还在测试中……):
44 4 * * 0 /root/backup.sh
每星期天 4
执行 backup.sh,酱 w以后想到啥子再说啦,好累,趴~
喜欢的话,留下你的评论吧~