说明:之前说了很多使用VPS
上传/下载OneDrive
文件的教程,查看:Onedrivecmd、OneDrive上传脚本,还有一些就不列举了,有兴趣自己在博客搜索,这里再分享一个适用于Linux
的OneDrive
客户端,该工具支持同步/上传,并使用Inotify
进行实时文件监控,来达到实时同步的效果,可以说就是一个备份工具。支持OneDrive for Business
和个人版,给我们备份下数据还是很不错。
使用
Github地址:https://github.com/abraunegg/onedrive
要求:作者是建议内存至少为1GB
、Swap
至少为1GB
。不过博主试了下,512M
等小点内存的KVM
是可以用的,只是需要多给点Swap
就行了,不然安装的时候会被杀死进程。
1、安装依赖
#Ubuntu和Debian x86_64系统
apt update
apt install build-essential
apt install libcurl4-openssl-dev -y
apt install libsqlite3-dev -y
apt install pkg-config -y
apt install libnotify-dev -y
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
2、添加swap
如果内存足够大,可以不用添加,小的话就需要添加了,具体参考文章开头的要求说明,不会添加的可使用脚本:Linux VPS一键添加/删除Swap虚拟内存。
3、安装客户端
git clone https://github.com/abraunegg/onedrive.git
cd onedrive
./configure
make
make install
4、认证客户端
这里随便输入个使用命令都会让你先认证一次,我们可以在SSH
客户端输入onedrive
命令,然后复制给你的链接,输入浏览器登录账号进行授权,再将授权后的链接地址复制到SSH
客户端运行。
5、执行同步
#该命令第一次会将OneDrive网盘所有文件/文件夹都下载同步到VPS的/root/OneDrive文件夹。
onedrive --synchronize
此后如果OneDrive
网盘或者/root/OneDrive
文件夹里的文件/文件夹有变动,再执行该命令会进行双向对应的变动/同步。
6、选择性同步
如果你不想同步整个网盘,而是某个文件夹,比如MOERATS
,使用命令:
#使用前提是OneDrive网盘和/root/OneDrive文件夹都有这个文件夹
onedrive --synchronize --single-directory MOERATS
7、单向同步
在某些情况下(如备份网站数据),可能只需要上传到OneDrive
。这样我们可以使用以下命令:
onedrive --synchronize --upload-only
该命令只会单向同步VPS
的/root/OneDrive
文件夹,不受OneDrive
网盘文件变动影响
8、卸载客户端
cd /root/onedrive
make uninstall
rm -rf ~/.config/onedrive
同步配置
提示:如果你要同步多个OneDrive账号,那么需要新建多个配置文件,然后运行多个同步命令即可。
1、更改VPS
同步文件夹
一般
默认的同步文件夹为/root/OneDrive
,其实我们是可以更改的,比如更改到/home/moerats
文件夹。
#新增并编辑配置文件
nano /root/.config/onedrive/config
添加以下代码:
sync_dir="/home/moerats"
按住Ctrl+x
,y
保存退出。
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
网盘了。
请问下,这个方便同步大文件吗?还是用rclone呢?想把onedrive里面电影文件夹同步到linux本地,大约400gb。
我觉得不太行,我100g的文件都同步不好
curl -fsS https://dlang.org/install.sh | bash -s dmd
Downloading and unpacking http://downloads.dlang.org/releases/2.x/2.100.0/dmd.2.100.0.linux.tar.xz
100.0%gpg: Signature made Fri 13 May 2022 09:48:21 PM CST using ? key ID 7F97C07F
gpg: Can't check signature: Invalid public key algorithm
Invalid signature http://downloads.dlang.org/releases/2.x/2.100.0/dmd.2.100.0.linux.tar.xz.sig。。。
啥意思??
我发现我的OD好像无法启动API,是用自己学校注册的,会不会是管理员没开放这个权限呢
第4步过不了么?
好像没搞懂,单向备份的是怎么搞的?命令输入之后,还是下载网盘文件到本地呐?好奇怪喏?
单向就是,只能服务器数据同步到网盘,双向就是不仅服务器可以同步到网盘,网盘也可以同步到服务器。
我明白你说的意思,只不过我同步的时候,ta直接开始下载了,好奇怪哦
请问下 我运行了同步命令 然后关闭SSH终端 服务器依旧会进行同步吗
还是说必须把终端开着才能运行呢?
会,挂后台,比如使用screen命令,看文章后面
ERROR: OneDrive returned a 'HTTP 5xx Server Side Error' - Cannot Initialize Sync Engine
执行同步报这个错误
这个看是不是网络问题,多试几次看看。这个错误好像在这里提过,你可以看看:https://github.com/abraunegg/onedrive/issues/445
onedrive我这都打不开的
OneDrive Free Client 需要访问只有管理员才能授权的组织资源。请管理员授权使用此应用程序后,您才能使用。
要完啊
你用的OneDrive for Business权限被限制了?
make
root@longletian:/usr/onedrive# make
make: * 没有指明目标并且找不到 makefile。 停止。
教程更新了,安装方法变了下,你再看看。
我使用onedrive --synchronize --monitor --confdir="~/.config/onedrive"这条命令显示ERROR: --synchronize and --monitor cannot be used together
Refer to --help to determine which command option you should use
为什么我 --synchronize --monitor不能一起使用系统是centos7
我简单看了下文档,规则改了,这2个参数不能一起用了,需要分开,文章后面改了下,你可以试试