LINUX.ORG.RU

Сообщения bigsmog88

 

потеря всех атрибутов в файлах на NFS шаре

Добрый день. Подскажите, может кто сталкивался. Есть NFS сервер и два клиента, серверы 1С к которым примонтирована через autofs шара с этого NFS сервера.

периодически случается такое, что у некоторых файлов слетают все атрибуты (владелец, группа, дата изменения, размер) и вместо них одни вопросительные знаки и файлы становятся недоступны вообще, рутом так же с ними ничего сделать нельзя. Если перезагрузить виртуалку с сервером NFS то атрибуты возвращаются и файлы становятся снова доступны. вот пример, если сделать ls -al /myfolder то вот такой вывод.

-rw-r--r--    1 usr1cv8 grp1cv8    33608 дек 19  2017 'Приказ1.docx'
-?????????    ? ?       ?              ?            ? 'приказ2.docx'

происходит это рандомно, неделю может быть все нормально, потом начинают вот такие файлы появляться.

С сеткой проблем нет. Если сделать очистку кэша на файловом сервере через echo 2 > /proc/sys/vm/drop_caches то файлы восстанавливаются. т.е. видимо есть какая-то проблема с кэшем.

бэкапы делаются но есть одно НО, если файл помечен уже ????? то его невозможно прочитать. Потом, большие сомнения, что проблема с оперативой, так как это ВМ и на этом хосте куча других ВМ, да и проблема возникает только с одно папкой, которая расшарена на NFS и при этом там есть и другие папки расшаренные этим же NFS, но эта папочка самая огромная, походу это именно проблема кэша NFS.

 , ,

bigsmog88
()

Дифференциальный бэкап средствами tar

Добрый день, помогите с написанием скрипта для диф бэкапа с помощью tar. На данный момент написан скрипт, который делает инкремент, но хочется дописать условие что бы делал диф, для этого надо сохранять файл метаданных созданный при последнем фулл бэкапе и подсовывать его ко всем последующим в течении 7 копий. Т.е. делается фулл потом 6 копий и когда количество файлов в папке достигает 7, они перемещаются в папку архив, старый файл метаданных удаляется и создается новый фул с новым файлом метаданных, вот я никак не могу сообразить, как написать условие, что бы этот файл например копировался с новым именем и потом уже со старым именем подставлялся для последующих бэкапов.

Сейчас это работает как инкрементальный бэкап.

#!/bin/bash
set -exu
######################### Начальные переменные #################################################
DAY=$(date +%Y%m%d_%H%M%S)
SOURCE="/test_folder"
BACKUP_FOLDER="/mnt/Backup_Files/current"
ARCHIVE_BACKUP_FOLDER="/mnt/Backup_Files/archive"
ARCHIVE_BACKUP_FOLDER_LOG="/mnt/Backup_Files/archive_log"
EXCLUDE_FILE="/tmp/.nobackup_dir"
NAME_SNAR="FILE.SNAR"
MAX_KOL_BACKUPS=7
VAR=0
FULL_BACK=0
######################### Проверка и создание директорий ########################################
if [[ ! -d ${BACKUP_FOLDER} ]]
then
  mkdir -p ${BACKUP_FOLDER}
  VAR=1
  FULL_BACK=1
else
  echo &>/dev/null
fi
 
if [[ ! -d ${ARCHIVE_BACKUP_FOLDER} ]]
then
  mkdir -p ${ARCHIVE_BACKUP_FOLDER}
else
  echo &>/dev/null
fi
 
if [[ ! -d ${ARCHIVE_BACKUP_FOLDER_LOG} ]]
then
  mkdir -p ${ARCHIVE_BACKUP_FOLDER_LOG}
else
  echo &>/dev/null
fi
 
if [[ ! -f ${EXCLUDE_FILE} ]]
then
  touch ${EXCLUDE_FILE}
else
  echo &>/dev/null
fi
 
########################### Счетчик количества бэкапов  ###########################################
if [[ VAR -eq 0 ]]
then
 KOL_BACKUPS=`ls -al  ${BACKUP_FOLDER}/ | grep .tar.gz | wc -l` 2>/dev/null
else
 KOL_BACKUPS=0
fi
 
########################### Перенос бэкапа в архив #################################################
if [[ ${KOL_BACKUPS} -eq ${MAX_KOL_BACKUPS} ]]
then
 mv ${BACKUP_FOLDER}/*.tar.gz ${ARCHIVE_BACKUP_FOLDER}/
 mv ${BACKUP_FOLDER}/*.log ${ARCHIVE_BACKUP_FOLDER_LOG}/
 rm ${BACKUP_FOLDER}/*.SNAR
 FULL_BACK=1
else
 echo &>/dev/null
fi
 
########################### Создание резервной копии ###############################################
if [[ ${FULL_BACK} -eq 1 ]] || [[ ${KOL_BACKUPS} -eq 0  ]]
then
 tar --exclude-from=${EXCLUDE_FILE} -v -c \
 -f ${BACKUP_FOLDER}/FULL-${DAY}.tar.gz -I pigz \
 --listed-incremental=${BACKUP_FOLDER}/${NAME_SNAR} $SOURCE &> ${BACKUP_FOLDER}/FULL-${DAY}.log
else
  tar --exclude-from=${EXCLUDE_FILE} -v -c \
 -f ${BACKUP_FOLDER}/DIFF-${DAY}.tar.gz -I pigz \
 --listed-incremental=${BACKUP_FOLDER}/${NAME_SNAR} $SOURCE &> ${BACKUP_FOLDER}/DIFF-${DAY}.log
fi
########################## Удаление старых бэкапов #################################################
cd ${ARCHIVE_BACKUP_FOLDER}/ && ls -t | tail -n+15 | xargs -i rm '{}'
cd ${ARCHIVE_BACKUP_FOLDER_LOG}/ && ls -t | tail -n+15 | xargs -i rm '{}'

 , ,

bigsmog88
()

RSS подписка на новые темы