为了实现备份VPS数据到百度网盘,因为对Python等等都不熟悉,因此采用C语言写了一个软件,名字叫"pcs"。软件源代码托管在 https://github.com/GangZhuo/baidupcs。
使用方法如下。
安装软件。
软件没有采用百度个人存储的公开API,而是直接分析网盘网站得到的接口,因此无需创建应用即可使用该软件。软件依赖于libcurl。
仅以Debian为例,安装步骤如下:
1. 首先安装依赖包libcurl,执行如下命令:
sudo apt-get install libcurl4-openssl-dev
2. 获取源代码
git clone https://github.com/GangZhuo/baidupcs.git
3.编译
cd baidupcs #进入源代码目录
mkdir bin #建立bin输出目录
make clean #清理一次
make #编译,编译完成后,
#将在bin目录下产生
#中间文件和pcs可执行文件
sudo make install #安装pcs到/usr/local/bin/
4.测试软件是否安装正确,输入如下命令看软件是否正确输出其版本
pcs --version
5. 创建自动备份的配置文件
pcs采用JSON格式作为其配置文件的存储格式,路径可自由指定,我的配置路径是/etc/pcs/default.json。
输入如下命令,创建/etc/pcs目录
sudo mkdir /etc/pcs
输入如下命令,通过vim创建和编辑配置文件
sudo vim /etc/pcs/default.json
我的配置文件内容如下:配置中各项的作用见 https://github.com/GangZhuo/baidupcs/blob/master/README.md
{
"cookieFilePath": "/var/local/pcs/default.cookie",
"cacheFilePath": "/var/local/pcs/cache.db",
"logFilePath": "/var/log/pcs.log",
"items": [{ /*每天凌晨4点备份代码仓库*/
"enable": 1,
"localPath": "/home/git/repos",
"remotePath": "/backup/repos",
"method": "backup",
"schedule": "04:00:00", /*schedule和interval两项配置每天凌晨4点开始备份*/
"interval": "00:24:00:00",
"md5": 1
}, { /*每天凌晨5点备份整个网站*/
"enable": 1,
"localPath": "/var/www",
"remotePath": "/backup/www",
"method": "backup",
"schedule": "05:00:00",
"interval": "01:00:00:00",
"md5": 1
}]
}
6.
创建配置文件中指定的存储Cookie和缓存文件的目录。注意:因为存储日志的目录/var/log已经存在,所以无需创建,如果指定了其他目录,则需要手动创建目录。
sudo mkdir /var/local/pcs
7.
登录一次网盘,目的是产生配置文件中设置的Cookie文件。这样的话,无需每次登录网盘。程序是无法自动识别验证码的。假设我的百度网盘帐号是pcsuser,那么敲入如下命令
sudo pcs -upcsuser --urlc --cookie=/var/local/pcs/default.cookie quota
该命令会要求输入密码,输入密码后回车,一般情况下,还会要求输入验证码。当需要输入验证码时,在浏览器中输入显示的URL地址来查看验证码,如下图
8. 登录成功后,将会输出UID和空间配额。如下图。如果登录失败的话,可能是验证码或密码输入错误,重复第7步。
9.
以上都成功后,则可以以Service模式启动pcs了。在Service模式下,pcs每隔1秒中检查一次配置文件中的items项,当计划的时间到达后,将执行任务。
我使用screen工具来后台运行pcs,如果未安装screen的话,使用如下命令安装screen
sudo apt-get install screen
使用如下命令来创建一个screen会话,并以service模式运行pcs.
screen -S backup #建立一个名字叫backup的会话sudo pcs svc --config=/etc/pcs/default.json #以service模式启动pcs,并指定使用刚配置好的配置文件。
如下图。
此时按下ctrl+a,然后按一下d,来分离screen会话。此时将回到之前的命令下。以后可以输入screen
-ls列出所有session会话,输入screen -r id来重新进入会话。
screen具体用法,自己google。
10. 在命令窗口中输入 tail - 20 /var/log/pcs.log来查看日志。如下图。
11. 在命令中输入如下命令查看任务情况。
pcs ls-op --config=/etc/pcs/default.json
12. 输入如下命令查看系统当前时间,和上图中任务的下次执行时间对比可知道过多久将执行任务。
pcs time
注意:如果备份的目录中包含中文字符的话,则操作系统需使用UTF-8编码,否则将出现中文乱码。
pcs还有很多其他的命令,具体参考 https://github.com/GangZhuo/baidupcs/blob/master/README.md