在某些情况下,自己的机器直接scp或者rsync拷贝文件到服务器上,速度非常慢。可能的原因链接的网络限制了某些流量。但是在多数情况下,我们自己的机器直接上传/下载文件到google drive或者服务器上传/下载到google drive通常速度可以占满带宽。利用这个特性,就可以借助google drive作为中转,提高本地与服务器之间的文件拷贝速度。
配置google drive api
参考rclone gdrive api 配置,一步一步获得你的client ID等信息。
注意!可以配置root_folder_id使得服务器上的rclone只能访问特定的文件夹,保证网盘的安全。
安装配置rclone
Rclone是一个好用的云存储管理软件,支持非常多的云存储,比如google drive和one drive等。而且rclone跨平台客户端丰富。
linux下只需要下载它对应的包解压即可。
参考rclone Google Drive,使用rclone config
命令,根据提示,一步一步选择和填写对应的API ID等信息即可。
常用命令
https://rclone.org/commands/
Copy
我一般常用的命令是
rclone copy --exclude core -P ./project_data g:/remote_data/
Sync
将本地的project_data目录同步到gdrive上,并保持完全一致,排除在.exclude中列出的文件和文件夹。sync命令只会修改目标文件夹,而不修改source文件夹。
rclone sync --exclude-from=./.excluded_files.txt ./project_data g:/project_data
.excluded_files.txt
里的内容格式类似如下:
/benchmark/
/ml_scripts/.downloads/
以project_data
为/
。
可以结合Linux自带的crontab
设置定时任务:
30 3 * * * /home/users/yhao24/opt/rclone/rclone sync --exclude-from /storage/users/yhao24/.rclone_exclude /storage/users/yhao24/p ncsu:/p
Tips
由于零碎小文件的传输速度要比一个大文件的传输慢很多,所以如果只是想要在本地和服务器之间传输某些超级大的文件夹,可以先用7zip压缩。
下面命令的意思就是用7z压缩一个gpunk.7z文件,排除.exclude-file.txt中列出的文件和文件夹。7z默认支持多线程压缩,所以会比tar或者zip快很多,而且文本压缩率也高很多。
7zr a -t7z gpupunk.7z ./gpupunk -xr@.exclude-file.txt
Comments