私の質問:
LFTPにファイルのみを含める方法そして 目次含まれていないリモートルートから追加のディレクトリをダウンロードする代わりに、または--include
?--include-glob
いくつかの背景:
LFTPとミラーリングを使用してサイトファイルをダウンロードしていますが、特定のファイルとディレクトリのみをダウンロードしたいと思います。そのため、リモートサーバーのルートで実行するためのLFTPの一部の包含と除外を提供しました。
LFTP担当者によると、私が理解しているように、インクルードを指定すると、指定したすべてのファイルが含まれている次のインクルードルールに除外が適用されます。これはルート上のファイルに対して完全に機能し、含まれていないファイルはダウンロードしません。ただし、含めるように要求したディレクトリだけでなく、ルート上のすべてのディレクトリもダウンロードします。
私は使用--include
に問題があると思います--include-glob
.内容物。
これは私のbashスクリプトです(bashスクリプトには少し新機能です)。
#!/bin/bash
# Credentials
protocol="ftp" # ftp or sftp
host="host"
user="user"
pass="pass"
localcd="/path/to/localdir"
remotecd="/remotedir"
# Set up FTP URL
ftpurl="$protocol://$user:$pass@$host"
# Default includes - helps only include core files in root in case there are other random files
includes="--include-glob wp-admin/*" # other dirs are still being downloaded with these three
includes+=" --include-glob wp-content/*"
includes+=" --include-glob wp-includes/*"
includes+=" --include ^wp-.*\.php$" # works just fine
includes+=" --include ^index.php$" # works just fine
includes+=" --include ^xmlrpc.php$" # works just fine
# Exclude hidden files/directories
excludes="--exclude-glob .*"
excludes+=" --exclude-glob .*/"
# LFTP sets
lftp_sets="set cmd:fail-exit yes;"
if [ "$protocol" == "ftp" ]
then
lftp_sets+=" set ftp:ssl-allow no;"
fi
# Run the LFTP
lftp -e "$lftp_sets
open '$ftpurl';
lcd $localcd;
cd $remotecd;
mirror --continue --only-newer --delete --verbose=3 --no-perms --parallel=8 $includes $excludes"
頑張った
includes="--include ^wp-.*/.**"
そして
includes="--include ^wp-admin/.*"
includes+="--include ^wp-content/.*"
includes+="--include ^wp-includes/.*"
数え切れないほど多くの変更があります。 4ページの深さのLFTPミラーリングについて私が検索したすべての項目には紫色のリンクがあります。 :(
答え1
作業順序。
最初に除外してから含める必要があります。
この例では、すべてのアイテムを除いて特定のフォルダを含め、次に含まれるフォルダ内のファイルを除外します。
mirror --exclude '.*' --exclude '.*/' --include 'v*-stable/' -X '*.src.rpm'
あなたの場合
mirror --continue --only-newer --delete --verbose=3 --no-perms --parallel=8 $excludes $includes"