Я думаю это git
это не хорошо для Вас, я также думаю это rsync
это намного лучше подходит для Вашей задачи, так как просто необходимо сохранить файлы в синхронизирующем мерзавце, не идеально, по-моему, потому что:
В man xz
вы обнаружите, что -9
требует 674 MiB памяти для сжатия (и что это полезно, только если вы сжимаете файлы больше 32 MiB). Попробуйте добавить сведения об этом значительном свопе, чтобы обеспечить достаточное количество виртуальной памяти для операции (предполагая, что вы используете всю текущую память для других целей).
dumpcap
, низкоуровневая программа захвата трафика Wireshark , может получить команду прекратить захват после определенных условий с помощью опции -a
. Вы можете прекратить захват после написания 60MB. Это не то же самое, что измерение трафика, поскольку он зависит от кодировки файла, но он должен быть достаточно близок для большинства целей (и в любом случае точный трафик зависит от того, на каком уровне протокола вы измеряете его - Ethernet, IP, TCP, приложение,...).
dumpcap -i eth0 -a filesize:61440 -w capture.dump
Вот действительно грязный метод, который можно использовать с Perl и командой perl system
. tcpdump
будет выгружать целые пакеты -s 0
интерфейса wlan0 -i wlan0
в файл tcpdump.pcap
. В моем примере он остановит все процессы и отключит интерфейс после того, как размер файла превысит 1 МБ. Измените в соответствии с вашими потребностями. Запустите его с помощью sudo
. Оператор sleep
приостанавливает выполнение программы, чтобы дать возможность tcpdump
запуститься.
Я использую Linux Mint, поэтому пути к программам и имена интерфейсов в вашей системе могут отличаться.
#!/usr/bin/perl
use warnings;
use strict;
my $file = 'tcpdump.pcap';
my $int = 'wlan0';
my $bytes = 1000000;
my $pid = open my $pipe,
"| /usr/sbin/tcpdump -n -i $int -s 0 -w $file &",
or die $!;
sleep 3;
while (1){
if (-s $file > $bytes){
print "Killing PID $pid, tcpdump and disabling $int\n";
system "kill -9 $pid; killall tcpdump";
system "/sbin/ifconfig $int down";
exit;
}
}