この記事には広告を含む場合があります。
記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。
とあるサーバ上にあるディレクトリを一括でダウンロードしてバックアップしたいと思ったのですが、普通のftpコマンドだと出来なさそう。
(再帰的なスクリプトかけよ、って話なんですけどねw)
で、調べたところ「ncftp」を使ってディレクトリまる毎ダウンロード出来るらしい事が判明。
なので「nctftp」を使ってみようかなと。
セキュリティ的には「SCP使えよ」って感じなんですが、場合によっては使えない事もありますので。
クリック可能な目次
ncftpインストール
raspberrypi2に「ncftp」をインストールします。
・インストール
# apt-get install ncftp
・確認
# ncftp --version
NcFTP 3.2.5 (Feb 02, 2011) by Mike Gleason (http://www.NcFTP.com/contact/).
ncftp> quit
インストール出来ました。
ncftpでFTP
FTP接続は以下のように行います。
# ncftp -u <ユーザ名> -p <パスワード> <リモートホスト名 or ip>
接続した後はFTPコマンドで色々と出来ます。
上記のようにインタラクティブに接続せず、コマンド一発で一括ダウンロードは以下のように行います。
シェルスクリプトに組み込むのは下記が良いかも。
・一括ダウンロード
# ncftpget -u <ユーザ名> -p <パスワード> -R ftp://<リモートホスト名 or ip>/<リモートディレクトリ>/
逆に一括アップロードもありますよ。
・一括アップロード
# ncftpput -R -u <ユーザ名> -p <パスワード> <リモートホスト名 or ip> /<リモートディレクトリ> /<ローカルディレクトリ>
FTPアップロードスクリプト
最後に作成したFTPアップロードスクリプトを参考に公開しておきます。
取り敢えず動きますが、適当なので信用しないでね(笑)
※201505/14 追記
【使い方】
下記のスクリプト + バックアップ対象ディレクトリを引数として3つ指定可能
実行例)
/script/ithinkit_ftp.sh <バックアップ1> <バックアップ2> <バックアップ3>
#!/bin/sh
# Local Backup Directory
WorkDir=/backup
BackupDir=${WorkDir}/$(date +%Y%m%d)
BackupDir1=${BackupDir}/$1
BackupDir2=${BackupDir}/$2
BackupDir3=${BackupDir}/$3
# BKDir Check
if [ ! -e ${BackupDir} ]; then
mkdir -p ${BackupDir}
fi
# ncftp CMD
Ncftp(){
ncftpget -R -u <FTPユーザ> -p <任意のパスワード> ftp://<リモートホスト>/<ディレクトリパス>/$1/
}
# Make Backup1 Directory
if [ ! -e ${BackupDir1} ]; then
mkdir ${BackupDir1}
fi
# Make Backup2 Directory
if [ ! -e ${BackupDir2} ]; then
mkdir ${BackupDir2}
fi
# Make Backup3 Directory
if [ ! -e ${BackupDir3} ]; then
mkdir ${BackupDir3}
fi
# FTP Download
cd ${BackupDir1} && Ncftp $1
cd ${BackupDir2} && Ncftp $2
cd ${BackupDir3} && Ncftp $3
# Old Backup Erace
find /backup/ -maxdepth 1 -mtime +7 | xargs rm -rf
ncftpを使うことによってFTPを使ったディレクトリ毎のバックアップが簡単に行える事が分かりました。
今はraspberrypi2上でバックアップスクリプトを実行していますが、容量が増えてくると考えないとな~。
それではまた!