ファイルを定期的にOneDriveへアップロード

プログラム

以前GoogleDriveに上げていたものを容量の問題でOneDriveに変更したく、
まとめ直しました。

環境はUbuntu 20.04.2 LTS

zip のインストール

sudo apt install zip

rclone のインストール

まずは「rclone」コマンドをインストールします。
このコマンドでGoogleドライブとの接続を行います。
Googleドライブ以外にも様々なオンラインストレージに接続できる超有能コマンドです。

参考:https://www.nextdoorwith.info/wp/se/how-to-control-google-drive-from-linux-rclone/

apt install -y rclone

接続先の登録

rclone config
n/s/q> n(”New remote”を選択)
name> od(任意の接続先名、コマンド実行時の接続先指定で使用)
Storage> onedrive(”OneDrive”を選択)
client_id> (未指定)(rcloneの既定のクライアントIDを使用)
client_secret> (未指定)(rcloneの既定のシークレットを使用)
y/n> n(advanced configは不要)
y/n> n(auto configは行わない)
For this to work, you will need rclone available on a machine that has a web browser available.
Execute the following on your machine (same rclone version recommended) :
        rclone authorize "onedrive"
Then paste the result below:
result>

※ 別のコンソールを開いて以下のコマンドを実行

rclone authorize "onedrive"
$ rclone authorize "onedrive"
If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth?state=jQtpj83IyGO1u6tECDGgHQ
Log in and authorize rclone for access
Waiting for code...

指定されたURLにアクセスして

(リモートの場合はsshでつなげるとかして頑張る。以下はTera Termの設定)

URLにアクセスするとMicroSoftの認証画面が出てくるのでそのまま進める


この画面が表示された時点でコンソールを確認すると

アクセストークンが表示されているのでコピーして(「{」から「}」まで全部)

Execute the following on your machine (same rclone version recommended) :
        rclone authorize "onedrive"
Then paste the result below:
result> ここに張り付け & Enter
Choose a number from below, or type in an existing value
 1 / OneDrive Personal or Business
   \ "onedrive"
 2 / Root Sharepoint site
   \ "sharepoint"
 3 / Type in driveID
   \ "driveid"
 4 / Type in SiteID
   \ "siteid"
 5 / Search a Sharepoint site
   \ "search"
Your choice> onedrive
Found 1 drives, please select the one you want to use:
0:  (personal) id=XXXXXXXXXXXXXXX
Chose drive to use:>0
Found drive 'root' of type 'personal', URL: https://onedrive.live.com/?cid=XXXXXXXXXXXXXXX
Is that okay?
y) Yes
n) No
y/n>y
--

--
y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d> y

Current remotes:

Name                 Type
====                 ====
gd                   drive
od                   onedrive

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q>q

動作確認
ーーGoogleドライブのマイドライブ直下のディレクトリを取得するコマンドです

rclone lsd od:

ーーGoogleドライブにファイルをコピーしてみます。

touch uploadtest.txt
rclone copy ./uploadtest.txt od:test/uploadtest
rclone copy <コピー元ファイル> gd:<コピー先フォルダ>

ブラウザ上でGoogleドライブを確認すると

保存されているのが確認できます。

存在しないフォルダを指定した場合は自動で作成されます。

cron のインストール

参考:https://www.kagoya.jp/howto/it-glossary/server/cron/

apt install -y cron

サービスを確認して、停止していたら起動します。

service cron status
service cron start

設定を更新します。

crontab -e

nanoエディタが気にくわない場合は、以下のコマンドで「/usr/bin/vim.basic」を選択することで、
viエディタに切り替えることができます。

select-editor

ファイル末尾に以下のコマンドを記述します。
※ファイルパスは適宜変更してください。
※長いけど一行でまとめましょう。(複数行にまたがると順番が狂う可能性があります)
※cdコマンドを使用して相対パスを指定する方法もありますが、-Cオプションを利用して絶対パスを指定しています。
※最後に対象ファイルを消すコマンドを入れてローカルから削除しているので注意。

59 */6 * * * zip -jr /home/ubuntu/archive/logfile_$(date +\%Y\%m\%d_\%H\%M\%S).zip /home/ubuntu/logfile ; rclone copy /home/ubuntu/archive/ od:/test/logfiles/ ; rm -f /home/ubuntu/logfile/*
59 */6 * * * zip -jr <圧縮後ファイル名(パス)> <圧縮対象フォルダ> ; rclone copy <圧縮後ファイル格納フォルダパス> gd:<Googleドライブの保存先※マイドライブ直下は「/」) ; rm -f <圧縮後ファイル格納フォルダパス>/*

ファイルを保存すればあとは自動で設定が適応されます。

上記コマンドでは6時間おきに実行するように設定しています。
cronコマンドの設定方法については調べれば出てきます。
こちらのサイトとか分かりやすかったです。
https://ex1.m-yabe.com/archives/3113

コメント

  1. It’s difficult to find well-informed people about this subject, however,
    you sound like you know what you’re talking about!
    Thanks

タイトルとURLをコピーしました