sftpでバッチ処理: 再帰ダウンロード(ディレクトリ以下のすべてのファイル)とレジューム(再開)できるようにする。
- 結論
mget -ar ディレクトリ名
- 基本
まず、基本
sftp -o "batchmode no" -b test.ftp username@xxx.xxx.xxx.xxx
バッチファイル
(1)何もしない
test.ftp
bye
(2)ファイルを保存
test2.ftp
get test/test2/test.txt
bye
(3)test/test2 以下のファイルをget (レジュームされない、同じファイルを何度もとる)
test3.ftp
mget test/test2/*
bye
- r オプション
(4)再帰的ダウンロードもできるらしい -r オプション (cygwin判)
sftp -r -o "batchmode no" -b test3.ftp usr@xxx.xxx.xxx.xxx
test3.ftp
mget test
bye
sftpコマンド自体でなく、mgetに-rオプションをつけてもOK
test以下を再起取得
以下のとおり:
mget -r test
bye
あたらしくとったもの
$ ls -lt | tail
- rw-r--r-- 1 user1 None 0 1月 21 10:51 104
- rw-r--r-- 1 user1 None 0 1月 21 10:51 103
- rw-r--r-- 1 user1 None 0 1月 21 10:51 102
- rw-r--r-- 1 user1 None 0 1月 21 10:51 101
- rw-r--r-- 1 user1 None 0 1月 21 10:51 1000
- rw-r--r-- 1 user1 None 0 1月 21 10:51 100
- rw-r--r-- 1 user1 None 0 1月 21 10:51 10
- rw-r--r-- 1 user1 None 0 1月 21 10:51 1
- rw-r--r-- 1 user1 None 11635 1月 21 10:51 tmp_list.txt
- rw-r--r-- 1 user1 None 24 1月 21 10:48 test3.ftp
前にとったもの
$ tail tmp_list.txt
- rw-r--r-- 1 user1 None 0 1月 21 10:49 105
- rw-r--r-- 1 user1 None 0 1月 21 10:49 104
- rw-r--r-- 1 user1 None 0 1月 21 10:49 103
- rw-r--r-- 1 user1 None 0 1月 21 10:49 102
- rw-r--r-- 1 user1 None 0 1月 21 10:49 101
- rw-r--r-- 1 user1 None 0 1月 21 10:49 1000
- rw-r--r-- 1 user1 None 0 1月 21 10:49 100
- rw-r--r-- 1 user1 None 0 1月 21 10:49 10
- rw-r--r-- 1 user1 None 0 1月 21 10:49 1
- rw-r--r-- 1 user1 None 24 1月 21 10:48 test3.ftp
- a オプション
(4)レジュームあり -a オプション
mget -ar test
bye
前にとったもの
$ head tmp
合計 0
- rw-r--r-- 1 user1 None 0 1月 21 11:40 tmp
- rw-r--r-- 1 user1 None 0 1月 21 11:39 959
- rw-r--r-- 1 user1 None 0 1月 21 11:39 619
- rw-r--r-- 1 user1 None 0 1月 21 11:39 847
- rw-r--r-- 1 user1 None 0 1月 21 11:39 455
- rw-r--r-- 1 user1 None 0 1月 21 11:39 562
- rw-r--r-- 1 user1 None 0 1月 21 11:39 290
- rw-r--r-- 1 user1 None 0 1月 21 11:39 184
- rw-r--r-- 1 user1 None 0 1月 21 11:39 488
あとにとったもの
$ ls -lt | head
合計 44
- rw-r--r-- 1 user1 None 44997 1月 21 11:40 tmp
- rw-r--r-- 1 user1 None 0 1月 21 11:39 959
- rw-r--r-- 1 user1 None 0 1月 21 11:39 619
- rw-r--r-- 1 user1 None 0 1月 21 11:39 847
- rw-r--r-- 1 user1 None 0 1月 21 11:39 455
- rw-r--r-- 1 user1 None 0 1月 21 11:39 562
- rw-r--r-- 1 user1 None 0 1月 21 11:39 290
- rw-r--r-- 1 user1 None 0 1月 21 11:39 184
- rw-r--r-- 1 user1 None 0 1月 21 11:39 488
上書きされていないことがわかる.
スクリプトの例
lpwd
lcd data/ubuntu
mget -ar /xxxx/detail
lcd ../..
lpwd
cd data/ubuntu02$
mget -ar /yyy/detail
bye
参考:
https://web.kudpc.kyoto-u.ac.jp/manual/ja/login/mac_linux_scp
http://webkaru.net/linux/sftp-command/
https://www.freebsd.org/cgi/man.cgi?query=sftp&sektion=1