Logger

Рейтинг
132
Регистрация
13.01.2011

в итоге получился скриптик - заходит на ftp и ротирует бекапы -оставляет последние 3


touch ~/.netrc
chmod 600 ~/.netrc
cat ~/.netrc
machine 192.168.1.1
login user
password pass

#!/bin/bash
### yum/apt-get install curlftpfs

function die () {
echo >&2 "$@"
exit 1
}

XARGS="$(which xargs)"
CAT="$(which cat)"
SED="$(which sed)"
FIND="$(which find)"
BACKUPDIR=/opt/testbak
FTPHOST[0]="192.168.1.1"
#FTPUSER[0]="login"
#FTPPASS[0]="pass"
FTPDIR[0]="bak"
FTPTEMPDIR[0]="/opt/ftptempdir"

if [[ ! -d $BACKUPDIR ]]
then
mkdir -p "$BACKUPDIR"
fi

if [[ ! -d $FTPTEMPDIR ]]
then
mkdir -p "$FTPTEMPDIR"
fi

cd $BACKUPDIR
for KEY in "${!FTPHOST[@]}"; do
mount curlftpfs#ftp://${FTPHOST[$KEY]}/${FTPDIR[$KEY]}/ ${FTPTEMPDIR[$KEY]} -t fuse -o rw,noauto,default_permissions,user,disable_eprt,_netdev -o fsname=ftpbak
if [[ $? -gt 0 ]];then
echo "монтирование не удачно, выход."
exit 1
fi
echo "монтирование удачно"

#строим полный список файлов бекапа
$FIND ${FTPTEMPDIR[$KEY]} -name "*.tar.gz" -type f | sort -n > $BACKUPDIR/1.txt
touch $BACKUPDIR/2.txt

#удаляем из списка последние 3 бекапа
cut_num() {
let QUANTITY=$1-3 > /dev/null
cat $BACKUPDIR/1.txt | grep $2 | sort -u | sed "${QUANTITY}"q
}
FILE_CONT=`cat $BACKUPDIR/1.txt| sort -u`
SAVEIFS=$IFS
IFS='
'
let COUNT=0 > /dev/null
for CURRENT_FILE in ${FILE_CONT}; do
CURRENT_USER=`echo ${CURRENT_FILE} | awk -F\/ '{print $4}'`
if [ "${CURRENT_USER}" != "${LAST_USER}" -a -n "${LAST_USER}" ]; then
CUTTED=`cut_num ${COUNT} ${LAST_USER}` > /dev/null
for READY_STRING in ${CUTTED}; do
echo ${READY_STRING} >> $BACKUPDIR/2.txt
done
let COUNT=0 > /dev/null
fi
let COUNT=${COUNT}+1 > /dev/null
LAST_USER=${CURRENT_USER}
done
CUTTED=`cut_num ${COUNT} ${CURRENT_USER}` > /dev/null
IFS=$SAVEIFS
for READY_STRING in ${CUTTED}; do
echo ${READY_STRING} >> $BACKUPDIR/2.txt
done

#удаляем устаревшие бекапы
$CAT $BACKUPDIR/2.txt | $XARGS rm
rm -f $BACKUPDIR/1.txt
rm -f $BACKUPDIR/2.txt

# отмонтируем FTPTEMPDIR
umount ${FTPTEMPDIR[$KEY]}
done

DenisVS да спасибо! все работает - это я ошибся при копировании.

цель была смонтировать удаленный ftp через curlftpfs (на который льются бекапы) в локальную папку - и вывести список архивов в 1.txt , вывести список котор надо удалить в 2.txt и грохнуть

$CAT $BACKUPDIR/2.txt | xargs rm

mtime не походит - потому что если бекапы перестанут делаться по какой то причине - они будут все удалены - а тут полюбому останется 3

но если бекапов уже храниться 3 - то sed получает 0 и 2.txt пустой


/opt/test/1.sh: line 14: [: предполагается что будет использован аргумент
sed: -e выражение #1, символ 2: недопустимое использование строки адреса 0
sed: -e выражение #1, символ 2: недопустимое использование строки адреса 0
rm: пропущен операнд
По команде «rm --help» можно получить дополнительную информацию

хотя на следующий день будет 4 - и это неважно

а как вывести вывод этого скрипта в 2.txt - кроме как 1.sh > 2.txt ?

не работает - падает

1.sh: line 12: [: предполагается что будет использован аргумент
sed: неверный ключ — «2»

а мануал почитать ? https://phpclub.ru/manrus/cont/include.html

вот стандартное разбиение hetzner raid 10 из 4 дисков - причем boot и swap как raid1 из 4

[root@srv ~]# cat /proc/mdstat
Personalities : [raid1] [raid10]
md2 : active raid10 sdd3[3] sdc3[2] sdb3[1] sda3[4]
11651572736 blocks super 1.2 512K chunks 2 near-copies [4/4] [UUUU]
bitmap: 10/87 pages [40KB], 65536KB chunk

md1 : active raid1 sda2[4] sdc2[2] sdb2[1] sdd2[3]
1047552 blocks super 1.2 [4/4] [UUUU]

md0 : active raid1 sdc1[2] sda1[4] sdd1[3] sdb1[1]
33521664 blocks super 1.2 [4/4] [UUUU]

в биос еще надо поставить загрузочными первыми ssd

попробуй добавить


proxy_buffers 8 32k;
proxy_buffer_size 64k;
proxy_connect_timeout 75;
proxy_send_timeout 1800;
proxy_read_timeout 1800;
server_names_hash_bucket_size 512;
server_names_hash_max_size 1024;
large_client_header_buffers 4 81920;
sub_filter_last_modified on;

затраты: сервер с кучей ip и доменов + powermta ну и затраты на настройку и рассылку

точно от 1000$

можно с другого сервера через nfs подмонтировать папку в крайнем случае

уже давно работаю официально - зарегистрировал ИП. плачу 6% с оборота и в пенсионный обязательные платежи. учет веду с https://www.moedelo.org - кому нужно могу дать скидку 80 % на оплату за год - пишите в личку

Всего: 416