10MBを超える特定のファイルをアップロードする必要がある次のbashスクリプトに取り組んでいます。
#!/bin/sh
FTP_HOST=ftp.ftphost.com
FTP_USER=myftpuser
FTP_PASS=securepassword
[[ -n "$1" ]] || { echo "Usage: findlarge [PATHNAME]"; exit 0 ; }
FILES=`find "$1" -type f -size +10000k -printf '%p;'`
OLD_IFS="$IFS"
IFS=";"
FILES_ARRAY=( $FILES )
IFS="$OLD_IFS"
for fl in "${FILES_ARRAY[@]}"
do
INVERSE=`${fl//\/var\/www\/html/\/public_html}`
lftp -u $FTP_USER,$FTP_PASS -e "cd '${INVERSE}'; put '${fl}';quit" $FTP_HOST
done
これは、サーバーにアップロードする大きなファイルを必要とする特定のCDNに使用されます。続行する方法がわからない場合は、ホスト側のファイルはにあります/var/www/html/
が、リモートサーバーにはに配置する必要があります/public_html/
。リモートサーバーには、ホストサーバーと同じファイル構造が必要です。
私が直面している問題に$INVERSE
は、実際のファイル名とパスが含まれています。ファイルを正しいディレクトリに適切に配置できるように、INVERSE変数からファイル名を削除する方法が必要です。
次のような正規表現ステートメントを知っている人はいますか?
/public_html/path/to/file/filename.zip
に変更します
/public_html/path/to/file/