Связаться с нами

  • (097) ?601-88-87
    (067) ?493-44-27
    (096) ?830-00-01

Статьи

Відновлення пошкодженого tgz архіву, після передачі по ftp.

Налаштовуючи бекап чергового сайту, зауважив що частина архівів бита

Налаштовуючи бекап чергового сайту, зауважив що частина архівів бита. Дуже сильно здивувався такому сюрпризу. Вивчивши ситуацію, знайшов в чому справа ...

Перш за все потрібно коротко розповісти як працюють бекапи у мене:

  • На сервері з сайтами, за визначеним розкладом запускається bash скрипт
  • В скрипті робиться дамп бази, архівується папка сайту і при необхідності різні доп. файли (наприклад крони).
  • До іменам отриманих файлів додається мітка часу і все це складається в бекап-папку відповідного сайту
  • Далі, файли копіюються на віддалений сервер за допомогою утиліти ftp
  • І наостанок чистимо папку з резервних копій, щоб на вихідному сервері зберігати тільки кілька останніх версій бекапа

Як і написано, система бекапа робить кілька архівів (мінімум 2-а: база + папка сайту). Так ось на сервері бекапов, я виявив що деякі архіви відкривається нормально (видно лістинг файлів), а частина пошкоджена. Саме те, що частина архівів була в нормі мене і ввело в ступор. Пошкоджений файл мав приблизно той же розмір що і на вихідному сервері, при цьому на вихідному сервері файл не був пошкоджений. Саме тому я запідозрив в некоректній роботі безпосередньо ftp передачу між серверами.

Проблема виявилася досить проста: кілька місяців тому, я перенаправив все бекапи на сервер з ОС Windows Server. Відповідно, і FTP сервер був піднятий рідний для Windows Server. Трохи погуглити, я дізнався наступне: при ASCII передачі з Linux сервера на Windows, по-різному обробляється переклад каретки (переклад рядка). Linux передає "\ n", Windows використовує "\ r \ n". Відповідно файл ламається.

Тепер давайте розберемося, чому частина файлів билася, а частина немає. В архівах, де всередині був один єдиний файл (наприклад дамп бази), архіватор міг прочитати ім'я файлу і показати його мені. В архівах де було кілька файлів, архіватор не можу прочитати другий файл і тому відразу повідомляв про помилку. Ну, а по суті при спробі розпакувати архів помилка була в обох випадках. Тобто враховуйте те, що якщо архіватор (WinRar, 7Zip) відкрив архів і ви бачите ім'я файлу, це ще не означає що архів цілий.

Гаразд, думаю ви вже зрозуміли, що я отримав багато битих архівів. Пошукавши рішення, я натрапив на пост, в якому описується ситуація схожа на мою, але найголовніше там описувалося як відновити такі файли. Зробити це досить просто:

для Windows

  • Качаємо файлик: http://www.gzip.org/fixgz.zip або звідси
  • Разархівіруем, знаходимо утиліту: fixgz.exe
  • Далі передаємо їй битий файл і отримуємо відремонтований
  • Синтаксис команди: # fixgz broken.gz fixed.gz, де broken.gz = битий файл, fixed.gz = файл куди буде записаний відремонтований
  • Я поклав цей файлик fixgz.exe в C: \ Windows, далі пройшовся по проблемним файлів і все відновив

для Linux

  • Качаємо файлик: http://www.gzip.org/fixgz.zip або звідси
  • розпаковуємо
  • Відкриваємо в редакторі: fixgz.c і додаємо наступній рядком "#include <stdlib.h>" після "#include <stdio.h>" (інакше при компіляції будуть warning-і)
  • Далі компілюємо файл: # gcc -o fixgz fixgz.c
    (при необхідності спочатку встановіть gcc: # apt-get install gcc або #yum install gcc)
  • У підсумку, в цій директорії повинен з'явитися бінарний файл fixgz, його і використовуємо
  • Передаємо битий файл і отримуємо відремонтований
  • Синтаксис команди: # fixgz broken.gz fixed.gz, де broken.gz = битий файл, fixed.gz = файл куди буде записаний відремонтований

Тепер треба розібратися як же поправити bash скрипт, щоб файліки відправлятися не биті? У цьому нам допоможе мануал на утиліту ftp, який можна знайти тут: man ftp , Нас цікавить ось ця частина, де описуються команди, доступні після установки з'єднання:

binary - Встановлює режим передачі файлів для підтримки передачі двійкових образів.

Додаємо цю команду перед командою put, вийде щось типу:

ftp - i - n $ HOST $ PORT << EOF

user $ USER $ PASS

binary

put $ SRC _ FILE $ DEST_FILE

bye

EOF

Після цього все починає працювати так, як і очікувалося.

Новости

Фольгированные шары с гелием
Для начала давайте разберемся и чего же выполнен фольгированный шар и почему он летает дольше?! Как вы помните, наши латексные шарики достаточно пористые, поэтому их приходится обрабатывать специальным

Пиротехника своими руками в домашних
Самые лучшие полезные самоделки рунета! Как сделать самому, мастер-классы, фото, чертежи, инструкции, книги, видео. Главная САМОДЕЛКИ Дизайнерские

Все товары для праздника оптом купить
Как сделать правильный выбор в работе, бизнесе и жизни, о котором никогда не придется жалеть. Мы хотим рассказать вам об удивительной и очень простой технике 7 вопросов, которые позволят оценить ситуацию

Как сделать красивую снежинку из бумаги
Красивые бумажные снежинки станут хорошим украшением дома на Новый год. Они создадут в квартире атмосферу белоснежной, зимней сказки. Да и просто занимаясь вырезанием из бумаги снежинок разнообразной

Надувные шарики с гелием с доставкой
На праздники часто бывают востребованы воздушные шарики, надутые гелием. Обычно, их покупают уже готовыми (надутыми) и привозят на праздник. Или, приглашают специалистов, которые приезжают и надувают

Как сделать из бумаги самолет
 1. Самолеты сделанный по первой и второй схеме являются самыми распространенными. Собирается такое оригами своими руками достаточно быстро, несмотря на это самолет летит достаточно далеко за счет свое

2400 наименований пиротехники
В последние десятилетия наша страна может похвастаться появлением нескольких десятков отечественных производителей, специализирующихся на выпуске пиротехники. Если вы сомневаетесь, какой фейерверк заказать,

Аниматоры на детские праздники в Зеленограде
Уж сколько раз твердили миру…Что готовиться ко дню рождения нужно заранее, а не бегать в предпраздничный день угорелой кошкой. Нельзя впихнуть в 24 часа дела, рассчитанные на недели. К празднику нужно

Суши доставка меню
В последние годы японская кухня стала очень популярной в нашей стране. И найти современного человека, который бы никогда не пробовал суши и роллы очень сложно. Но как правильно кушать суши палочками

Обеденные группы для маленькой кухни
Любой дом начинается с кухонной комнаты, а хороший дом - с уютной кухни. Уютной назвать кухню можно, если все в ней гармонично подобрано в соответствии с вашими вкусами и в едином стиле. Многие люди