1

だから、シードボックスからものをダウンロードするスクリプトがあります。リモートサーバーにあり、ローカルサーバーにミラーリングされた新しいファイルに最適です。問題は、たとえば、不要なファイルを削除したい場合に、スクリプトを再度実行すると、同じファイルが再度ダウンロードされることです。mirror の man ページを調べてみましたが、役に立ちませんでした。ファイルをミラーリングするスクリプトは次のとおりです。

#!/bin/bash

login=XXXX
pass=XXXXXX
host=XXXXX
remote_dir=/files/
local_dir=/home/XXX/XXX

trap "rm -f /tmp/seedroots.lock" SIGINT SIGTERM

if [ -e /tmp/seedroots.lock ]; then
   echo "Synctorrent is running already."
   exit 1
else
   touch /tmp/seedroots.lock
   lftp -p 21 -u $login,$pass $host << EOF
   set ftp:ssl-allow no
   set mirror:use-pget-n 5
   mirror -c -P5 --log=synctorrents.log $remote_dir $local_dir

   EOF

   rm -f /tmp/seedroots.lock
   exit 0
fi

ローカルで削除されたファイルを再度ダウンロードしない、私が見逃しているミラーのオプションはありますか?

4

3 に答える 3

1

mirrorlftpのコマンドには--continue、必要な動作になるフラグがあります。

于 2012-05-23T20:29:16.020 に答える
0

私のバージョンのスクリプトを試してください(テストされていません):

#!/bin/bash

login=XXXX
pass=XXXXXX
host=XXXXX
remote_dir=/files/
local_dir=/home/XXX/XXX
files=$local_dir/*

trap "rmdir /tmp/seedroots.lock" 0 1 2 3 15

if [[ -d /tmp/seedroots.lock ]]; then
    echo "Synctorrent is running already."
    exit 1
else
    mkdir /tmp/seedroots.lock

    lftp -p 21 -u $login,$pass $host << EOF
    set ftp:ssl-allow no
    set mirror:use-pget-n 5
    mget $files

    EOF

fi

それは何をします:

  • ファイルのローカル リストを作成し、その後、変数 を使用して、ftp サーバー上のこれらすべてのファイルを取得します$files
  • ロックファイルを dir:search web about atomityに置き換えました。
    ファイルはアトミックではありませんが、ディレクトリはアトミックです。
  • トラップは、通常の終了およびその他のシグナルで実行されます
  • bash を使用している場合、[[ ]]テストはより強力になります。
  • インデントは単なるオプションではありません;)
于 2012-05-23T20:14:44.693 に答える
-1

ファイルをリーチしている (シードしていない) だけの場合は、転送後にソースでファイルを削除するオプションを指定して lftp ミラーを使用できます--Remove-source-files(したがって、重複や再ダウンロードはありません)。

于 2012-12-29T14:26:11.267 に答える