web-dev-qa-db-ja.com

LFTPミラーに含まれる-私が含めたもの以外の他のディレクトリを含む

私の質問: LFTPにファイルのみが含まれていることを確認するには[〜#〜] and [〜#〜]directories--includeまたは--include-globを使用し、インクルードに含まれていないリモートのルートから追加のディレクトリをダウンロードしませんか?

一部のコンテキスト:

LFTPとミラーを使用してサイトのファイルをダウンロードしていますが、特定のファイルとディレクトリのみをダウンロードしたいのですが。そのため、リモートサーバーのルートから実行するためにLFTPにいくつかのインクルードとエクスクルードを与えました。

LFTPの担当者によると、インクルードを指定した場合に指示するすべてのファイルのみがインクルードされ、エクスクルードがインクルードルールに適用されるというのが私の理解です。これは、ルートディレクトリのファイルに最適で、含まれていないファイルはダウンロードされません。ただし、ルートに含まれるすべてのディレクトリをダウンロードします。

私の疑いは、--include--include-globの使用に問題があることです...両方(globまたはregex)の間で何を試しても、LFTPミラーをダウンロードできませんインクルードで指定した以外のディレクトリ。

これが私の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/.*"

そして、私が数えることができないほど多くのバリエーション。私がLFTPミラーについてグーグルで調べたものはすべて、深さ4ページに紫色のリンクがあります。 :(

4
Josh S.

操作の順序。

最初に除外が必要で、次にインクルードが必要です。

この例では、すべてを除外し、特定のフォルダーを含め、含まれているフォルダー内のファイルを除外します。

mirror --exclude '.*' --exclude '.*/' --include 'v*-stable/' -X '*.src.rpm'

あなたの場合

mirror --continue --only-newer --delete --verbose=3 --no-perms --parallel=8 $excludes $includes"
3
acomputerwiz