适用于Linux的OneDrive客户端,支持VPS和OneDrive之间实时同步/备份

https://www.moerats.com/archives/740/

说明:之前说了很多使用VPS上传/下载OneDrive文件的教程,查看:OnedrivecmdOneDrive上传脚本,还有一些就不列举了,有兴趣自己在博客搜索,这里再分享一个适用于LinuxOneDrive客户端,该工具支持同步/上传,并使用Inotify进行实时文件监控,来达到实时同步的效果,可以说就是一个备份工具。支持OneDrive for Business和个人版,给我们备份下数据还是很不错。

1. 使用

Github地址:https://github.com/abraunegg/onedrive

要求:作者是建议内存至少为1GBSwap至少为1GB。不过博主试了下,512M等小点内存的KVM是可以用的,只是需要多给点Swap就行了,不然安装的时候会被杀死进程。

1.1 安装依赖

  • Ubuntu和Debian x86_64系统

    sudo apt update
    sudo apt install build-essential libcurl4-openssl-dev libsqlite3-dev pkg-config libnotify-dev curl -y
    sudo curl -fsS https://dlang.org/install.sh | bash -s dmd
    
  • Debian i386/i686系统

    apt update
    apt install build-essential -y
    apt install libcurl4-openssl-dev -y
    apt install libsqlite3-dev -y
    apt install libnotify-dev -y
    apt install git make -y
    mkdir ldc && cd ldc
    wget http://httpredir.debian.org/debian/pool/main/g/gcc-8/gcc-8-base_8.2.0-19_i386.deb
    wget http://httpredir.debian.org/debian/pool/main/g/gcc-8/libgcc1_8.2.0-19_i386.deb
    wget http://httpredir.debian.org/debian/pool/main/l/ldc/libphobos2-ldc-shared82_1.12.0-1_i386.deb
    wget http://httpredir.debian.org/debian/pool/main/l/ldc/libphobos2-ldc-shared-dev_1.12.0-1_i386.deb
    wget http://httpredir.debian.org/debian/pool/main/l/ldc/ldc_1.12.0-1_i386.deb
    wget http://httpredir.debian.org/debian/pool/main/l/llvm-toolchain-6.0/libllvm6.0_6.0.1-10_i386.deb
    wget http://httpredir.debian.org/debian/pool/main/n/ncurses/libtinfo6_6.1+20181013-1_i386.deb
    dpkg -i ./*.deb
    
  • Debian(ARM64)系统

    apt-get update
    apt-get install libcurl4-openssl-dev -y
    apt-get install libsqlite3-dev -y
    apt-get install libxml2 -y
    apt-get install libnotify-dev -y
    wget https://github.com/ldc-developers/ldc/releases/download/v1.14.0/ldc2-1.14.0-linux-aarch64.tar.xz
    tar -xvf ldc2-1.14.0-linux-aarch64.tar.xz
    
  • CentOS系统

    yum groupinstall 'Development Tools' -y
    yum install libcurl-devel -y
    yum install sqlite-devel -y
    yum install libnotify-devel -y
    curl -fsS https://dlang.org/install.sh | bash -s dmd
    
  • Arch Linux系统

    pacman -S curl sqlite dmd
    pacman -S libnotify
    

一般会给你安装好DMD,最后会返回以下信息:

Run `source ~/dlang/dmd-2.082.0/activate` in your shell to use dmd-2.082.0.
This will setup PATH, LIBRARY_PATH, LD_LIBRARY_PATH, DMD, DC, and PS1.
Run `deactivate` later on to restore your environment.

然后我们再使用提示信息中第一行的命令,激活DMD,使用命令:

#请根据提示运行命令,有的系统会不一样,随机应变
source ~/dlang/dmd-2.082.0/activate

1.2 添加swap

如果内存足够大,可以不用添加,小的话就需要添加了,具体参考文章开头的要求说明,不会添加的可使用脚本:Linux VPS一键添加/删除Swap虚拟内存

1.3 安装客户端

git clone https://github.com/abraunegg/onedrive.git
cd onedrive
./configure
make
sudo make install

1.4 认证客户端

这里随便输入个使用命令都会让你先认证一次,我们可以在客户端输入onedrive命令,然后复制给你的链接,输入浏览器登录账号进行授权,再将授权后的链接地址复制到SSH客户端运行。


1.5 执行同步

#该命令第一次会将OneDrive网盘所有文件/文件夹都下载同步到VPS的/root/OneDrive文件夹。
onedrive --synchronize


此后如果OneDrive网盘或者/root/OneDrive文件夹里的文件/文件夹有变动,再执行该命令会进行双向对应的变动/同步。

1.6 选择性同步

如果你不想同步整个网盘,而是某个文件夹,比如MOERATS,使用命令:

#使用前提是OneDrive网盘和/root/OneDrive文件夹都有这个文件夹
onedrive --synchronize --single-directory MOERATS

1.7 单向同步

在某些情况下(如备份网站数据),可能只需要上传到OneDrive。这样我们可以使用以下命令:

onedrive --synchronize --upload-only

该命令只会单向同步VPS/root/OneDrive文件夹,不受OneDrive网盘文件变动影响

1.8 卸载客户端

cd /root/onedrive
make uninstall
rm -rf ~/.config/onedrive

2. 同步配置

  • 提示:如果你要同步多个OneDrive账号,那么需要新建多个配置文件,然后运行多个同步命令即可。

2.1 更改VPS同步文件夹

一般默认的同步文件夹为/root/OneDrive,其实我们是可以更改的,比如更改到/home/moerats文件夹。

#新增并编辑配置文件
vim /root/.config/onedrive/config

添加以下代码:

sync_dir="/home/moerats"

按住Ctrl+xy保存退出。

2.2更改其它同步设置

除了步骤1说的sync_dir参数外,我们还可以使用以下配置参数:

sync_dir:同步文件的目录
skip_file:同步期间将跳过与此模式匹配的任何文件或目录
skip_symlinks:同步期间将跳过符号链接的任何文件或目录
monitor_interval:监视进程处理本地和远程更改的时间间隔(秒)

参数详解:

  • skip_file后面参数不区分大小写。支持通配符和*。如果有多个文件/目录使用|分隔即可。如:

    skip_file = ".*|~*|Desktop|Documents/OneNote*"
    
  • skip_symlinks设置为"true"将在同步时跳过所有符号链接。如:

    skip_symlinks = "true"
    
  • monitor_interval为同步等待时间,默认每45秒同步一次,你可以修改成每10分钟同步一次。如:

    monitor_interval = "300"
    

最后我们在后台进行监控,使用命令:

#synchronize为进行一次性同步
onedrive --synchronize --verbose --confdir="~/.config/onedrive"
#monitor使应用程序保持运行并监视本地和远程的更改
onedrive --monitor --verbose --confdir="~/.config/onedrive"


测试没问题了,就使用screen在后台运行,教程参考:使用screen来实现多任务不断线操作命令

最后我们就可以实时将VPS文件备份到OneDrive网盘了。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,290评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,399评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,021评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,034评论 0 207
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,412评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,651评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,902评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,605评论 0 199
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,339评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,586评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,076评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,400评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,060评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,083评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,851评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,685评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,595评论 2 270

推荐阅读更多精彩内容