Программное обеспечение Linux для того, чтобы наблюдать изменения папки по FTP?

При обслуживании статического содержания (или HTML или HTML, сгенерированный чем-то как подвижный тип) затем, ответ, для любых современных аппаратных средств, много. Где много, вероятно, измеряется в десятках миллионов статических запросов в день.

В такой установке первое ограничение, с которым Вы столкнетесь, будет размером Вашего соединения серверов с Вашим дата-центром. Поставщики наиболее выделенного сервера начнут Вас с соединением на 10 Мбит, которое является, вероятно, первой вещью, которая истратит, если Вы приблизитесь к количеству запросов, заключенных в кавычки выше. Обычно они будут переключать Вас на порт на 100 Мбит для минимального изменения, но знать, что это просто означает, что Вы имеете 10x увеличение того, как быстро Ваше ограничение пропускной способности (если у Вас есть один) может быть исчерпано. Обратите пристальное внимание и контролируйте свой ежемесячный журнал useage тесно, чтобы Вы не вносите большую плату за излишек.

Так, после того как у Вас есть соединение на 100 Мбит, следующей потенциальной проблемой будет скорость получения Ваших данных от жесткого диска до сети. Даже на уровне 100 Мбит, который является все еще только 12 МБ в секунду от жесткого диска, который тривиален для современных аппаратных средств. Учитывая достойный объем свободной памяти (для дискового кэша) и хорошее соединение размеров файла (от нескольких сотен байтов для Вашего favicon.ico к нескольким сотням Кбит для большой фотографии) Вы все еще, вероятно, ограничите соединение на 100 Мбит прежде, чем поразить серьезную загрузку.

Однако все это принимает сайт, который служит статическому содержанию, которое почти никогда не верно. При использовании веб-платформы как Django, направляющие, Grails или какая-либо из сотен там затем первым bottlekneck будет ЦП, второй будет память, и третьей будет сумма параллелизма, который может обработать приложение.

0
задан 16 February 2015 в 13:40
5 ответов

У ncftp клиента есть ncftpls инструмент, который может сделать рекурсивный длинный список.

1
ответ дан 4 December 2019 в 15:32
  • 1
    I' m рассмотрение этого также. На самом деле я предполагаю, что это - то, что решило бы проблему..., если я не решил ее в другом отношении. Однако, этот вопрос допустим сам по себе.:) –  Vilx- 18 June 2009 в 14:17

Вот решение для Perl с помощью Сети:: FTP. Ниже сценария должен распечатать имя файла и метку времени для каждого файла в файловом сервере. Можно легко расширить это для удовлетворения фактическим потребностям.

#!/usr/bin/perl

use strict;
use Net::FTP;
use File::Listing qw(parse_dir);
use POSIX qw(strftime);

# Configuration Options
my $FTP_SERVER        = 'ftp_host_name';
my $FTP_USER          = 'username';
my $FTP_PASS          = 'password';

# Establish FTP connection
my $ftp = Net::FTP->new( $FTP_SERVER, Debug => 0 )
  or die "Cannot connect to $FTP_SERVER: $@";
$ftp->login( $FTP_USER, $FTP_PASS )
  or die "Cannot login ", $ftp->message;
$ftp->binary;

# Get list of files
my $files = $ftp->dir;
foreach my $entry (parse_dir($files)) {
    my ($fileName, $type, $size, $mtime, $mode) = @$entry;
    next unless $type eq 'f';
    my $timeStamp = strftime "%Y-%m-%d %H:%M:%S", gmtime($mtime);
    print "Name: $fileName\t Time Stamp: $timeStamp\n";
}

$ftp->quit;
1
ответ дан 4 December 2019 в 15:32

Я - вполне уверенный lftp, может быть задан сценарием, чтобы сделать это; иначе я просто пользовался бы библиотекой FTP для своего любимого языка сценариев (Ruby/Perl/Python) и сделал бы задание тот путь.

0
ответ дан 4 December 2019 в 15:32
  • 1
    У меня была идея [некоторое программное обеспечение списка папок FTP здесь, ncftp, возможно?]-> разность-> grep (отфильтровывает несколько папок I don' t заботятся о)-> электронная почта. –  Vilx- 18 June 2009 в 12:21

Вот сценарий оболочки для помощи Вам на Вашем пути. Если можно выполнить это по ssh, то Вы сделаны. Если необходимо сделать это по FTP, то Вы будете встречаться, мой старый друг Ожидают.Удачи!

#!/usr/bin/env bash

if [ ! -f .baseline ]; then
    echo "No timestamp available for comparison. Exiting."
    exit 1
fi

for filename in ./*
do
    if [ .baseline -ot "$filename" ]; then
        echo "$filename"
    fi
done

touch .baseline

0
ответ дан 4 December 2019 в 15:32

Используйте wget. Первый день:

wget -r -q --spider --no-remove-listing --ftp-user=YOU --ftp-password=YOURSECRET ftp://YOURSERVER   2>&1

Эта команда произведет локальный каталог под названием YOURSERVER с загруженным деревом каталогов внизу, но каждый каталог будет содержать только один файл, названный ".listing". .listing файлы могут сравниться со старыми копиями с различной командой.

Теперь каждый день:

mv YOURSERVER PREVIOUS_DIR
wget as above
diff -r YOURSERVER PREVIOUS_DIR 

Это распечатает все строки, которые отличаются, и крон должен автоматически отправить результат по почте Вам.

0
ответ дан 4 December 2019 в 15:32
  • 1
    Кажется шагом в правильном направлении! Конечно, было бы более хорошим, если бы был всего один файл, не целое дерево. –  Vilx- 18 June 2009 в 12:44
  • 2
    К счастью различный-r сравнивает приятно целые деревья каталогов. Я соглашаюсь, что было бы лучше иметь клиент FTP, поддерживающий что-то как ' найти.-ls' и храните всего один файл списка локально. Я не уверен, почему делают Вам нужны имена файлов, но в случае, если Вы хотите загрузить эти файлы: wget имеет-N опцию (загрузки недавно изменили/создали файлы). –  kubanczyk 18 June 2009 в 13:07
  • 3
    Я хочу знать то, что изменилось и затем решает самостоятельно ли эти файлы достойная из загрузки и включения папки SVN. –  Vilx- 18 June 2009 в 13:13

Теги

Похожие вопросы