Changes between Initial Version and Version 1 of TipAndDoc/service/Google/Drive/Comparision


Ignore:
Timestamp:
Nov 5, 2017 3:59:38 PM (6 years ago)
Author:
mitty
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • TipAndDoc/service/Google/Drive/Comparision

    v1 v1  
     1[[PageOutline]] 
     2[[TitleIndex(TipAndDoc/service/Google/Drive/Comparision,format=group)]] 
     3 
     4 * Googleドライブ クライアントの仕様比較 
     5 
     6 * 検証対象 
     7  * GUIではなくコンソールから使用できるものを対象とした 
     8  * aur:google-drive-ocamlfuse 0.6.7-1 
     9  * aur:gdrivefs 0.14.8-2 
     10  * [https://www.archlinux.org/packages/community/x86_64/rclone/ rclone] 1.35-1 
     11 
     12 * 検証に用いる一時ファイルなどは以下のように用意した 
     13{{{ 
     14dd if=/dev/urandom of=1GiB.0 count=1048576 bs=1024 
     15for i in {0..9}; do dd if=/dev/urandom of=102.4MiB.$i count=7482 bs=14351; done 
     16for i in {0..99}; do dd if=/dev/urandom of=10.24MiB.$i count=346 bs=31033; done 
     17for i in {0..100}; do dd if=/dev/urandom of=1MiB.$i count=1024 bs=1024; done 
     18for i in {0..1000}; do dd if=/dev/urandom of=100KiB.$i count=100 bs=1024; done 
     19 
     20$ du -b 
     211073745920      ./1.1Gx1 
     221073745916      ./2.102Mx10 
     231073745896      ./3.10Mx100 
     24105910272       ./4.1Mx100 
     25102539264       ./5.100Kx1000 
     26}}} 
     27  * {{{4.1Mx100}}} は実際には101ファイル、{{{5.100Kx1000}}}も同じく1001ファイル 
     28 
     29 * rsync オプションについて 
     30{{{ 
     31rsync --times --recursive --links --human-readable --whole-file --delete --stats --inplace --verbose 
     32}}} 
     33  * ファイルシステムとしてマウント可能なクライアントに対して使用 
     34  * コピー中の一時ファイルを作成させないため、 {{{--inplace}}} オプションを用いた 
     35  * [https://github.com/astrada/google-drive-ocamlfuse/wiki/rsync rsync · astrada/google-drive-ocamlfuse Wiki] 
     36 
     37 * dstat のオプションは次のようにした 
     38{{{ 
     39dstat -t -c -m -d -n -o dstat.csv --nocolor 5 
     40}}} 
     41 
     42 * 検証環境 
     43  * QEMU/KVM VM on Core i7-4790 (wiki:TipAndDoc/Hardware#ASUSH97M-PLUS) 
     44  * vCPU: 2cores 
     45  * Mem : 2GB 
     46  * Disk: qcow2 file backend on software RAID1 HDD x2 
     47  * ArchLinux 4.10.x (途中で何度かアップデート) 
     48 
     49 * インターネット回線について 
     50  * 比較的安定しているが、時間帯(主に深夜)によっては遅くなる 
     51  * 下り: 100Mbps~、上り: 80Mbps~ をほぼ維持できている 
     52  * 参考: http://www.speedtest.net/result/6254044691, http://beta.speedtest.net/result/6294874249 
     53 
     54 = 用語について = 
     55 * アップロード 
     56  * ローカルストレージからGoogleドライブへの移動・コピー。もしくはマウントされているFUSEへの書き込み 
     57 * ダウンロード 
     58  * アップロードの逆で、ローカルストレージへの移動・コピー。もしくはマウントされているFUSEからの読み込み 
     59 * キャッシュ 
     60  * FUSEを使ってマウントする場合に、ローカルストレージに作成される一時ファイル 
     61 * ファイルID 
     62  * Googleドライブ上でアイテム(ファイル・ディレクトリ)を一意に指定するID 
     63  * Googleドライブではディレクトリもファイルの一種 
     64  * ブラウザ上ではURLにこれが含まれる 
     65 
     66 = brief overview of comparison = 
     67 
     68 * 各ツールの設定において、特にチューニング等は行っていない 
     69 * I/Oの速度計測は十分な回数実施し平均をとるべきだが、傾向が見たいだけだったので各1回しか計測していない 
     70 
     71||= 名前 =||= アクセス方法 =||||||||= Up =||||||||= Down =||||= mtimeの保存 =||= CPU負荷 =||= 操作の中断 =|| 
     72|| - || - ||1.07GB x1||102MB x10||10MB x100||1MB x101||1.07GB x1||102MB x10||10MB x100||1MB x101||アップロード||ダウンロード ^[#cmp1 *1]^|| - || - || 
     73||ブラウザ||WebUI||10MB/s~||未計測||未計測||未計測||10MB/s~||未計測||未計測||未計測||保存されない||保存されない||低負荷||可|| 
     74||google-drive-ocamlfuse ||FUSE mount||940.87KB/s||828.39KB/s||623.52KB/s||158.71KB/s||14.04MB/s||9.72MB/s||未計測||503.27KB/s||保存されない||保存される||高負荷(IO wait)||不可|| 
     75||GDriveFS||FUSE mount||3.22MB/s ^[#cmp2 *2]^||1.95MB/s||1.11MB/s||197.46KB/s||計測不可 ^[#cmp3 *3]^||984.82KB/s ^[#cmp4 *4]^||未計測||816.26KB/s ^[#cmp4 *4]^||場合による ^[#cmp5 *5]^ ||保存される||高負荷(usr)||不可|| 
     76||rclone||CUI (rsync like)||7.064MB/s||9.783MB/s||8.532MB/s||2.397MB/s||16.521MB/s||19.585MB/s||未計測||4.493MB/s||保存される||保存される||低負荷||可|| 
     77 
     78 1. [=#cmp1] rsyncコマンドでのみ確認 
     79 2. [=#cmp2] I/Oエラーが発生したため、dstatでの計測下でない条件での参考値 
     80 3. [=#cmp3] I/Oエラーが発生したため 
     81 4. [=#cmp4] 一部のファイルでI/Oエラーが発生した 
     82 5. [=#cmp5] cpコマンド {{{cp -a}}} では保存されないが、rsyncコマンドでは保存される 
     83 
     84 == copy/move == 
     85 * cp, mvなどによるファイルの複製・移動について 
     86 
     87 * ブラウザからの操作 
     88  * すべてサーバーサイドで処理される 
     89  * 単純な移動はmtimeが維持されるが、ファイル名変更は維持されない 
     90  * コピーは新しいファイルの作成となるため、mtimeは維持されない 
     91 
     92 * rclone 
     93  * Googleドライブはサーバーサイドでの移動・コピーをサポートしているため、rcloneでもサーバーサイドで処理される 
     94  * https://rclone.org/overview/#optional-features Googleドライブを含め、各種クラウドストレージサービスの機能比較 
     95  * 移動先はディレクトリである必要がある 
     96  * mitty@google:~$ {{{rclone move google:/move/rclone/1MiB google:/move/rclone/1MiB.move}}} 
     97{{{ 
     982017/04/23 19:35:35 ERROR : Google drive root 'move/rclone/1MiB.move': can't move files on overlapping remotes 
     992017/04/23 19:35:35 ERROR : Attempt 1/3 failed with 0 errors and: can't move files on overlapping remotes 
     1002017/04/23 19:35:35 ERROR : Google drive root 'move/rclone/1MiB.move': can't move files on overlapping remotes 
     1012017/04/23 19:35:35 ERROR : Attempt 2/3 failed with 0 errors and: can't move files on overlapping remotes 
     1022017/04/23 19:35:35 ERROR : Google drive root 'move/rclone/1MiB.move': can't move files on overlapping remotes 
     1032017/04/23 19:35:35 ERROR : Attempt 3/3 failed with 0 errors and: can't move files on overlapping remotes 
     1042017/04/23 19:35:35 Failed to move: can't move files on overlapping remotes 
     105}}} 
     106  * mitty@google:~$ {{{rclone move google:/move/rclone/1MiB google:/move/1MiB.move}}} 
     107  * mitty@google:~$ {{{rclone ls  google:/move/1MiB.move}}} 
     108{{{ 
     109  1048576 1MiB 
     110}}} 
     111   * {{{1MiB}}}ファイルがリネームされるのではなく、{{{1MiB.move}}}というディレクトリの中に移動される 
     112 
     113 == move of directory tree == 
     114 * ブラウザからの操作と同様、treeディレクトリがdestディレクトリにリネームされたのと同じコマンド操作が可能[[br]][[Image(googedrive-movetree.png,33%)]] 
     115  * mitty@google:~$ {{{time rclone -v move google:/move/rclone/tree/ google:/move/rclone/dest/}}} 
     116{{{ 
     1172017/04/23 22:11:26 INFO  : Google drive root 'move/rclone/dest': Modify window is 1ms 
     1182017/04/23 22:11:26 INFO  : Google drive root 'move/rclone/dest': Server side directory move succeeded 
     1192017/04/23 22:11:26 INFO  : 
     120Transferred:      0 Bytes (0 Bytes/s) 
     121Errors:                 0 
     122Checks:                 0 
     123Transferred:            0 
     124Elapsed time:        4.6s 
     125 
     126real    0m4.606s 
     127user    0m0.027s 
     128sys     0m0.000s 
     129}}} 
     130  * mitty@google:~/mnt/google-drive-ocamlfuse/move/gdo$ date; time mv -v tree dest; date 
     131{{{ 
     132Sun Apr 23 22:14:44 JST 2017 
     133'tree' -> 'dest' 
     134 
     135real    0m1.874s 
     136user    0m0.000s 
     137sys     0m0.000s 
     138Sun Apr 23 22:14:46 JST 2017 
     139}}} 
     140  * mitty@google:~/mnt/gdfs/move/gdfs$ date; time mv -v tree dest; date 
     141{{{ 
     142Sun Apr 23 22:17:43 JST 2017 
     143'tree' -> 'dest' 
     144 
     145real    0m1.804s 
     146user    0m0.000s 
     147sys     0m0.000s 
     148Sun Apr 23 22:17:45 JST 2017 
     149}}} 
     150 
     151 * ディレクトリのファイルIDは維持される 
     152 * ツリー以下のファイル数が多くなっても、ディレクトリ自体の移動は一瞬で完了する 
     153 
     154 = google-drive-ocamlfuse = 
     155 
     156 * 認証 => wiki:TipAndDoc/service/Google/OAuth#aur:google-drive-ocamlfuse 
     157 
     158 == mount/umount == 
     159 
     160 * mitty@google:~/mnt$ google-drive-ocamlfuse google-drive-ocamlfuse 
     161{{{ 
     162Mar 20 16:46:10 google kernel: fuse init (API version 7.26) 
     163Mar 20 16:46:10 google systemd[1]: Mounting FUSE Control File System... 
     164Mar 20 16:46:10 google systemd[1]: Mounted FUSE Control File System. 
     165}}} 
     166 * $ mount 
     167{{{ 
     168google-drive-ocamlfuse on /home/mitty/mnt/google-drive-ocamlfuse type fuse.google-drive-ocamlfuse (rw,nosuid,nodev,relatime,user_id=1000,group_id=1000) 
     169}}} 
     170 
     171 * fusermount -u /home/mitty/mnt/google-drive-ocamlfuse 
     172 
     173 == features == 
     174 * {{{$HOME/.gdfuse/default/cache/}}} にキャッシュを作成する 
     175  * ファイルIDがファイル名になっている 
     176 * マウントしたローカルディレクトリは、Sambaからアクセスできない(見えなくなる) 
     177  * Googleドライブをローカルにマウントして、その中身をSambaでさらに別のPCからアクセスすることはできない 
     178 * マウントしたディレクトリへアクセスする場合、まずキャッシュファイルが作成される 
     179  * マウントしたディレクトリへのコピー・移動時: キャッシュファイル作成→Googleドライブへネットワーク転送 
     180  * マウントしたディレクトリからの場合: Googleドライブからキャッシュディレクトリへダウンロード→目的のパスにファイル作成 
     181 * rmコマンドによる削除はゴミ箱(.Trash/)への移動となる 
     182 
     183 === mtime === 
     184 * {{{cp -a}}}、rsyncのいずれでも、アップロード時は一部のファイルを除いて更新日時は同期時に変更されてしまう 
     185  * mtimeが保存されるファイルとそうでないファイルの違いは不明 。拡張子などによる違いではない模様 
     186 * ダウンロード時はmtimeは保存される 
     187 
     188 === I/O === 
     189 * for detail => [[./dstat/google-drive-ocamlfuse]] 
     190 
     191 * アップロード 
     192  * ネットワーク転送に先立ってディスク上にキャッシュが作成されるが、かなり時間がかかる (10MB/s程度しか出ない)が、アップロード自体は高速(~100Mbps) 
     193  * キャッシュ作成中はCPUがIO waitで高負荷になる(100%) 
     194  * キャッシュ作成のI/Oが完了する前にGoogleドライブ上にはファイルが作成されている 
     195   * ただしサイズが表示されないので、openされただけのような状態でデータにはアクセスできない模様 
     196  * キャッシュの作成完了とともに書き込みプロセスからシェルに制御ぎゃもどるため、writeが終了したとして処理されている模様 
     197   * 実際のネットワークアップロードはその後バックグラウンド処理 
     198 * ダウンロード 
     199  * FUSEからの読み込みによってキャッシュが作成されるが、これもIO waitで高負荷になる(80%~) 
     200  * Googleドライブからのダウンロード自体は高速(~190Mbps) 
     201  * キャッシュへの書き込み終了後の読み込みは高速かつ低IO wait 
     202 
     203 * I/O waitについては、[http://forums.debian.net/viewtopic.php?f=10&t=129095#p620297 Debian User Forums • View topic - Google drive mounting client.] でも言及されている 
     204 
     205 === move/copy === 
     206 * マウントしたディレクトリ上でのcp, mvいずれでもmtimeは保存されない 
     207 * cpはサーバーサイドで処理されず、一度キャッシュにダウンロードしたのち改めてアップロードとして処理される 
     208 * mvはサーバーサイドで処理され、ファイルIDも維持される 
     209 
     210 * for detail => [[./dstat/google-drive-ocamlfuse#movecopy]] 
     211 
     212 === error handling === 
     213 * マウント中に、Googleアカウント側でクレデンシャルを削除するなどして接続を切ると、lsのI/Oがブロックして帰ってこなくなる 
     214  * 割り込み不可のためCtrl+Cなども効かないが、google-drive-ocamlfuseプロセスをkillすることで一応回避可能 
     215 * 書き込み(アップロード)が完了したように見えても、{{{fusermount -u}}}せずGoogleアカウント側でクレデンシャルを削除して切断するとファイルが壊れることがある模様 
     216 * アンマウント中にGoogleアカウント側でクレデンシャルを削除し、{{{google-drive-ocamlfuse}}}で再マウントしてもエラー表示などは表示されない 
     217  * debug表示があるかは未確認 
     218  * ただしアクセスしようとするとI/Oエラーになる 
     219{{{ 
     220$ google-drive-ocamlfuse ~/mnt/google-drive-ocamlfuse/ 
     221$ ls -la google-drive-ocamlfuse 
     222ls: cannot access 'google-drive-ocamlfuse': Input/output error 
     223}}} 
     224 
     225 == config == 
     226 * read onlyにすることが可能 
     227  * $ vim .gdfuse/default/config 
     228{{{ 
     229read_only=true 
     230}}} 
     231  * $ touch google-drive-ocamlfuse/tmp 
     232{{{ 
     233touch: cannot touch 'google-drive-ocamlfuse/tmp': Permission denied 
     234}}} 
     235  * $ mount 
     236{{{ 
     237google-drive-ocamlfuse on /home/mitty/mnt/google-drive-ocamlfuse type fuse.google-drive-ocamlfuse (rw,nosuid,nodev,relatime,user_id=1000,group_id=1000) 
     238}}} 
     239   * mount上は区別できない 
     240 
     241 == debug == 
     242 * mitty@google:~$ google-drive-ocamlfuse -debug ~/mnt/google-drive-ocamlfuse/ 
     243{{{ 
     244Starting application setup (label=default, base_dir=/home/mitty/.gdfuse). 
     245Opening log file: /home/mitty/.gdfuse/default/gdfuse.log 
     246}}} 
     247  * foregroud で動作する 
     248  * ただし、不安定になるためあまり使いにくそう 
     249 * mitty@google:~$ ls -l mnt/google-drive-ocamlfuse 
     250{{{ 
     251ls: cannot access 'mnt/google-drive-ocamlfuse': Software caused connection abort 
     252}}} 
     253 * mitty@google:~$ google-drive-ocamlfuse -debug ~/mnt/google-drive-ocamlfuse/ 
     254{{{ 
     255Illegal instruction (core dumped) 
     256}}} 
     257 
     258 = GDriveFS = 
     259 * 認証 => wiki:TipAndDoc/service/Google/OAuth#aur:gdrivefs 
     260 
     261 == mount/umount == 
     262 
     263 * mitty@google:~$ gdfstool mount ~/.gdfs/cred ~/mnt/gdfs/ 
     264 * sudo umount /home/mitty/mnt/gdfs 
     265 
     266 * $ gdfstool mount {{{-o big_writes}}} .gdfs/cred ~/mnt/gdfs/ 
     267  * はっきりわかるほどの差は発生しなかった 
     268 
     269 == features == 
     270 * {{{/tmp}}}にキャッシュを作成する 
     271  * ディストリビューションによってはtmpfs(オンメモリ)になっていることが多いので、巨大なファイルにアクセスしようとすると空き容量が不足してファイルが壊れることがある 
     272{{{#!sh 
     273'sample/1GiB' -> 'gdfs/sample/1GiB' 
     274cp: error writing 'gdfs/sample/1GiB': Input/output error 
     275}}} 
     276  * {{{export TMPDIR=/var/tmp/}}}等、キャッシュを作成するパスを変更することで回避可能 
     277 * google-drive-ocamlfuse 同様、ファイルへのアクセスは一度tmpにキャッシュファイルが作成される 
     278 * {{{getfattr}}}コマンドにより、Googleドライブ上でのファイルIDや作成日時(ctime)、修正日時(mtime)などの属性を確認できる 
     279  * [https://github.com/dsoprea/GDriveFS#extended-attributes Extended Attributes] 
     280 * {{{ln}}}によるsymlinkは作成できない 
     281 * rmはゴミ箱ではなく即座に削除される 
     282 
     283 === mtime === 
     284 * google-drive-ocamlfuse 同様、{{{cp -a}}}でもアップロード時はmtimeは保存されない 
     285 * ダウンロードでは保存される 
     286 
     287 === I/O === 
     288 
     289 * for detail => [[./dstat/gdrivefs]] 
     290 
     291 * キャッシュ作成時は50MB/s程度、ネットワーク転送はアップロード・ダウンロードとも~30Mbpsほどで低速 
     292 * キャッシュ作成中はCPUがIO waitで高負荷になる(~80%)が、時間はそれほどかからない 
     293 
     294 === move/copy === 
     295 * google-drive-ocamlfuseと同様、マウントしたディレクトリ上でのcp, mvいずれでもmtimeは保存されない 
     296 * mvはサーバーサイドで処理されるが、cpはローカルのキャッシュを経由してダウンロード→アップロードされる 
     297 * mvではファイルIDは維持される 
     298 
     299 * for detail => [[./dstat/gdrivefs#movecopy]] 
     300 
     301 === error handling === 
     302 * 転送途中にCtrl+Cで強制終了ができない 
     303  * psで見るとSTATがDになっている 
     304 * gdfstoolのプロセスをkillするなどして無理に強制終了すると、OSのシャットダウン時にI/Oがブロックされたままになることがある 
     305 
     306 == debug == 
     307 * https://github.com/dsoprea/GDriveFS#developingdebugging 
     308 * export {{{GD_DEBUG=1}}} 
     309 
     310 * mitty@google:~/.gdfuse/default$ cat curl.log 
     311{{{ 
     312[15.400034] curl: info:   Trying 172.217.25.74... 
     313[15.400053] curl: info: TCP_NODELAY set 
     314[15.436757] curl: info: Connected to www.googleapis.com (172.217.25.74) port 443 (#0) 
     315[15.436874] curl: info: ALPN, offering http/1.1 
     316[15.436914] curl: info: Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH 
     317[15.441081] curl: info: successfully set certificate verify locations: 
     318[15.441089] curl: info:   CAfile: /etc/ssl/certs/ca-certificates.crt 
     319  CApath: none 
     320[15.441138] curl: info: TLSv1.2 (OUT), TLS header, Certificate Status (22): 
     321}}} 
     322 * mitty@google:~/.gdfuse/default$ cat gdfuse.log 
     323{{{ 
     324[0.000102] TID=0: Setting up default filesystem... 
     325[0.000116] TID=0: Loading configuration from /home/mitty/.gdfuse/default/config...done 
     326[0.000193] TID=0: BEGIN: Saving configuration in /home/mitty/.gdfuse/default/config 
     327[0.000258] TID=0: END: Saving configuration in /home/mitty/.gdfuse/default/config 
     328[0.000282] TID=0: Loading application state from /home/mitty/.gdfuse/default/state...done 
     329Current version: 0.6.7 
     330Setting up cache db...done 
     331Setting up CURL...done 
     332Refresh token already present. 
     333[0.002030] TID=0: Starting filesystem /home/mitty/mnt/google-drive-ocamlfuse/ 
     334[0.004052] TID=1: init_filesystem 
     335[15.395620] TID=2: getattr / 
     336[15.395644] TID=2: BEGIN: Loading metadata from db 
     337[15.395883] TID=2: BEGIN: Recalculating cache size (old value=213280358) 
     338[15.396095] TID=2: END: Recalculating cache size (new value=213280358) 
     339[15.396101] TID=2: END: Getting metadata: Not valid 
     340[15.396104] TID=2: BEGIN: Refreshing metadata 
     341}}} 
     342 
     343 = rclone = 
     344 
     345 * Googleドライブを含め、多数のクラウドストレージに対応している 
     346  * https://rclone.org/overview/ 
     347 * 認証 
     348  * google-drive-ocamlfuse と同様に、ハードコードされたクライアントIDを使うことも、自分で用意したものを設定することもできる 
     349 
     350 == features == 
     351 * FUSE mountする機能もあるがまだ実験的 (EXPERIMENTAL) 
     352  * シーケンシャルアクセスのみ対応 
     353  * https://rclone.org/commands/rclone_mount/ 
     354 * copyコマンドなど多くのコマンドが、引数のパスをディレクトリ名として扱うことが多い点に注意が必要 
     355  * 特に移動・コピー先のパス(dest)はディレクトリして扱われるコマンドが多い 
     356  * このため、あるファイルを別のディレクトリにコピーすることはできるが、コピー先のファイル名を指定してコピーと同時にリネームするようなことはできない 
     357 * 同時並行で複数の処理が行われる。デフォルトでは4並行 
     358  * 当然だが各転送ごとの帯域はその並行数だけ分割される 
     359 * 使用するネットワーク帯域に制限をかけることができる 
     360 * パスワードを設定し透過的に暗号化することができる 
     361 * ログをファイルもしくはsyslogに出力可能 
     362 
     363 === mtime === 
     364 * ダウンロード・アップロードとも保存される 
     365 * move, copyコマンドにおいても維持される 
     366 * ディレクトリのmtimeは保存されない 
     367 
     368 === I/O === 
     369 * [[./dstat/rclone]] 
     370 
     371 * CPU負荷はusr, io waitとも高くなく、制限しなければネットワーク帯域をすべて使い切ることができる 
     372 
     373 === move === 
     374 * mitty@google:~$ {{{rclone move google:/mtime/rclone google:/mtime/rclone.test}}} 
     375  * 移動前と移動後で、ファイルのファイルIDは維持される 
     376{{{ 
     377$ getfattr -d mnt/gdfs/mtime/rclone/1MiB | grep '\.id' 
     378user.original.id="0B6fZtAGUBbvtazRXTjR2T19GZzQ\012" 
     379}}} 
     380{{{ 
     381$ getfattr -d mnt/gdfs/mtime/rclone.test/1MiB | grep '\.id' 
     382user.original.id="0B6fZtAGUBbvtazRXTjR2T19GZzQ\012 
     383}}} 
     384 
     385 * mitty@google:~$ {{{date; time rclone move google:/rclone/1.1Gx1 google:/rclone/dest/1.1Gx1}}} 
     386{{{ 
     387Thu Mar 30 01:00:19 JST 2017 
     388 
     389real    0m4.700s 
     390user    0m0.023s 
     391sys     0m0.000s 
     392}}} 
     393  * サーバーサイドで処理されるため、ファイルサイズに関わらず数秒で完了する 
     394  * ネットワーク帯域もほぼ使用しない 
     395{{{ 
     396$ dstat -t -c -m -d -n -o dstat.csv --nocolor 5 
     397----system---- --total-cpu-usage-- ------memory-usage----- -dsk/total- -net/total- 
     398     time     |usr sys idl wai stl| used  free  buff  cach| read  writ| recv  send 
     39930-03 01:00:13|  3   1  96   0   0| 140M 1671M 36.2M  120M|   0   819B|1357B 3805B 
     40030-03 01:00:18|  0   0  98   2   0| 140M 1671M 36.2M  120M|   0  9011B| 281B  349B 
     40130-03 01:00:23|  0   0 100   0   0| 146M 1665M 36.2M  120M|   0   819B|9626B 1965B 
     40230-03 01:00:28|  0   0  99   1   0| 140M 1671M 36.3M  120M|   0  3277B|1401B  718B 
     40330-03 01:00:33|  0   0 100   0   0| 140M 1671M 36.3M  120M|   0   819B| 524B  507B 
     404}}} 
     405 
     406 === copy === 
     407 * mitty@google:~$ {{{time rclone copy google:/mtime/rclone/1MiB google:/mtime/rclone/1MiB.copy}}} 
     408{{{ 
     409 
     410real    0m6.659s 
     411user    0m0.027s 
     412sys     0m0.010s 
     413}}} 
     414  * moveと同じく、サーバーサイドで処理されるため、ファイルサイズに関わらず数秒で完了する  
     415  * 同様にネットワーク帯域もほぼ使用しない 
     416{{{ 
     417----system---- --total-cpu-usage-- ------memory-usage----- -dsk/total- -net/total- 
     418     time     |usr sys idl wai stl| used  free  buff  cach| read  writ| recv  send 
     41901-04 23:05:47|  1   0  98   1   0| 147M 1720M 18.6M  104M|   0   819B| 721B 1281B 
     42001-04 23:05:52|  1   1  97   1   0| 142M 1725M 18.6M  104M|   0  4096B|1087B 3182B 
     42101-04 23:05:57|  0   0  99   1   0| 148M 1718M 18.6M  104M|   0    15k|  13k 1908B 
     42201-04 23:06:02|  0   0 100   0   0| 141M 1725M 18.6M  104M|   0     0 |7335B 2294B 
     423}}} 
     424  * コピーの場合は当然ながらファイルIDは異なったものになる 
     425{{{ 
     426mitty@google:~$ getfattr -d mnt/gdfs/mtime/rclone/1MiB | grep '\.id' 
     427user.original.id="0B6fZtAGUBbvtSkVLTzI4YjM3Nm8\012" 
     428mitty@google:~$ getfattr -d mnt/gdfs/mtime/rclone/1MiB.copy/1MiB | grep '\.id' 
     429user.original.id="0B6fZtAGUBbvtel93REFhTUpvUkE\012" 
     430}}} 
     431 
     432 * 10MB x100ファイル (約1GB)のコピーであっても短時間で処理できる 
     433  * mitty@google:~$ {{{date; time rclone copy google:/rclone/3.10Mx100 google:/rclone/dest/3.10Mx100.copy}}} 
     434{{{ 
     435Sat Apr  1 23:13:24 JST 2017 
     436 
     437real    0m25.053s 
     438user    0m0.083s 
     439sys     0m0.037s 
     440}}} 
     441  * {{{$ dstat -t -c -m -d -n -o dstat.csv --nocolor 5}}} 
     442{{{ 
     443----system---- --total-cpu-usage-- ------memory-usage----- -dsk/total- -net/total- 
     444     time     |usr sys idl wai stl| used  free  buff  cach| read  writ| recv  send 
     44501-04 23:13:17|  0   0 100   0   0| 156M 1710M 18.8M  104M|   0     0 | 627B  547B 
     44601-04 23:13:22|  0   0  99   1   0| 157M 1710M 18.8M  104M|   0  2458B| 296B  363B 
     44701-04 23:13:27|  0   0 100   0   0| 161M 1705M 18.8M  104M|  21k    0 |  14k 2225B 
     44801-04 23:13:32|  0   0  99   1   0| 163M 1704M 18.8M  104M|   0  2458B|  76k 5625B 
     44901-04 23:13:37|  0   0 100   0   0| 164M 1702M 18.8M  104M|   0     0 |  13k 4202B 
     45001-04 23:13:42|  0   0  99   1   0| 164M 1702M 18.8M  104M|   0  2458B|  12k 4351B 
     45101-04 23:13:47|  0   0 100   0   0| 164M 1702M 18.8M  104M|   0   819B|  13k 4506B 
     45201-04 23:13:52|  0   0  99   1   0| 157M 1709M 18.9M  104M|   0  3277B|4994B 1486B 
     45301-04 23:13:57|  0   0 100   0   0| 157M 1709M 18.9M  104M|   0     0 | 502B  479B 
     454}}} 
     455 
     456 * 自分がオーナーではないファイルについてもサーバーサイドでコピーが可能 
     457  * mitty@google:~$ {{{rclone -v copy google:/share/shared google:/share/copy}}} 
     458{{{ 
     4592017/05/19 01:13:45 INFO  : Google drive root 'share/copy': Modify window is 1ms 
     4602017/05/19 01:13:47 INFO  : Google drive root 'share/copy': Waiting for checks to finish 
     4612017/05/19 01:13:47 INFO  : Google drive root 'share/copy': Waiting for transfers to finish 
     4622017/05/19 01:13:48 INFO  : 10.24MiB.5: Copied (server side copy) 
     4632017/05/19 01:13:48 INFO  : 1MiB: Copied (server side copy) 
     4642017/05/19 01:13:49 INFO  : test/10.24MiB: Copied (server side copy) 
     4652017/05/19 01:13:49 INFO  : test/1MiB.copy: Copied (server side copy) 
     4662017/05/19 01:13:49 INFO  : 
     467Transferred:      0 Bytes (0 Bytes/s) 
     468Errors:                 0 
     469Checks:                 0 
     470Transferred:            4 
     471Elapsed time:        6.6s 
     472}}} 
     473  * {{{google:/share/shared}}} 以下のファイルは別ユーザーからの共有ファイル 
     474 
     475 == encrypt/decrypt == 
     476 * https://rclone.org/crypt/ 
     477 * ファイル名の暗号化にも対応 
     478 * nonce を用いる(24バイト、ファイルの先頭に保存される)ため、同じパスワード、同じファイルであっても暗号化後は異なるファイルになる 
     479  * このため、ファイルサイズは若干大きくなる 
     480 * パスワードと別にsaltも指定可能({{{password2}}}として指定できる)