Взятие Резервного копирования файлов особого предела в Unix

Я думаю, общие принципы сетевого поиска и устранения неисправностей:

  1. Узнайте в том, какой уровень стека TCP/IP (или некоторого другого стека) происходит проблема.
  2. Поймите то, что является корректным поведением системы, и что является отклонением от состояния нормальной системы
  3. Попытайтесь выразить проблему в одном предложении или в нескольких словах
  4. Используя полученную информацию от ошибочной системы, Вашего собственного опыта и опыта других людей (Google, различный форум, и т.д.), попытка решить проблему до успеха (или отказ)
  5. Если Вы приводите к сбою, спрашиваете других людей о справке или некотором совете

Что касается меня, я обычно получаю всю запрошенную информацию с помощью всех необходимых инструментов и пытаюсь соответствовать этой информации к своему опыту. Решение, какой уровень сетевого стека содержит ошибку, помогает отключить маловероятные варианты. Используя опыт других людей помогает решить проблемы быстро, но часто он приводит к ситуации, что я могу решить некоторую проблему без ее понимания и если эта проблема происходит снова, для меня невозможно заняться им снова без Интернета.

И в целом, я не знаю, как я решаю сетевые проблемы. Кажется, что существует некоторая волшебная функция в моем названном мозгу SolveNetworkProblem(information_about_system_state, my_experience, people_experience), то, которое могло иногда давать точно правильный ответ и также могло иногда перестать работать (как здесь TCP умирает на ноутбуке Linux).

Я обычно использую utils от этого набора для сетевой отладки:

  • ifconfig (или ip link, ip addr) - для получения информации о сетевых интерфейсах
  • ping - для проверки, если целевой узел доступен от моей машины. ping также мог использоваться для базовой диагностики DNS - мы могли проверить с помощью ping-запросов хост IP-адресом или его именем хоста и затем решить, работает ли DNS вообще. И затем traceroute или tracepath или mtr смотреть, что продолжается на пути там.
  • dig - диагностируйте все DNS
  • dmesg | less или dmesg | tail или dmesg | grep -i error - для понимания, что ядро Linux думает о некоторой проблеме.
  • netstat -antp + | grep smth - мое самое популярное использование команды netstat, которая показывает информацию о соединениях TCP. Часто я выполняю некоторую фильтрацию с помощью grep. См. также новое ss команда (от iproute2 новый стандартный пакет Linux сетевые инструменты) и lsof как в lsof -ai tcp -c some-cmd.
  • telnet - очень полезно для общения с различными сервисами TCP (например, на SMTP, протоколах HTTP), также мы могли проверить общую возможность соединиться с некоторым портом TCP.
  • iptables-save (на Linux) - для дампа полных iptables таблиц
  • ethtool - получите все параметры сетевой карты (состояние ссылки, скорости, разгрузите параметры...),
  • socat - швейцарский армейский инструмент для тестирования всех сетевых протоколов (UDP многоадресно передайте, SCTP...). Особенно полезный (больше, чем telnet) с некоторыми -d опции.
  • iperf - протестировать доступность пропускной способности
  • openssl (s_client, ocsp, x509...) для отладки всех проблем SSL/TLS/PKI.
  • wireshark - мощный инструмент для получения и анализа сетевого трафика, который позволяет Вам анализировать и ловить много сетевых ошибок.
  • iftop - покажите крупным пользователям в сети/маршрутизаторе.
  • iptstate (на Linux) - текущее представление отслеживания соединения брандмауэра.
  • arp (или новое (Linux) ip neigh) - показывают состояние таблицы ARP.
  • route или более новое (на Linux) ip route - покажите состояние таблицы маршрутизации.
  • strace (или truss, dtrace или tusc в зависимости от системы) - полезный инструмент, который показывает, какие системные вызовы делает процесс задач, это также показывает коды ошибок (errno), когда системные вызовы перестали работать. Эта информация часто говорит достаточно для понимания поведения системы и решения проблемы. С другой стороны, использующие точки останова на некоторых сетевых функциях в gdb может позволить Вам узнать, когда они сделаны и с который аргументы.
  • исследовать проблемы брандмауэра о Linux: iptables -nvL шоу, сколько пакетов подобрано каждым правилом (iptables -Z обнулять счетчики). LOG цель, вставленная в цепочки брандмауэра, полезна для наблюдения, какие пакеты достигают их и как они были уже преобразованы, когда они добираются там. Добираться далее NFLOG (связанный с ulogd) зарегистрирует полный пакет.

1
10.08.2013, 03:39
3 ответа

Одно решение состоит в том, чтобы использовать команду разделения.

Команда разделения разделит архив в в несколько файлов, делая всю тяжелую работу для Вас.

Вот пример:

tar -cvf - file1 file2 file3 | split --bytes=50m --suffix-length=4 --numeric-suffix - myarchive.tar.

И к untar:

cat myarchive.tar.* | tar xvf -
1
27.01.2020, 23:39
  • 1
    Спасибо, Это работает. если у меня есть файлы на 50 МБ в формате tar.. это было бы лучше в передаче файлов через сеть без dataloss –   08.08.2013, 18:14
  • 2
    , Это является большим. Когда Вы готовы, не забывают выбирать лучший ответ на Ваш вопрос. –  Drew Khoury 09.08.2013, 10:50

zip пакет поддерживает bzip2 сжатие и --split.

bzip2 будет отвечать Вашим требованиям?

- s splitsize - размер разделения splitsize Позволяет создать архив разделения и установил размер разделения. Архив разделения является архивом, который мог быть разделен по многим файлам. Поскольку архив создается, если размер архива достигает указанного размера разделения, которые разделяют, закрывается и следующее открытое разделение.

...

Размер разделения является числом, дополнительно сопровождаемым множителем. В настоящее время число должно быть целым числом. Множитель может в настоящее время быть одним из k (килобайты), m (мегабайты), g (гигабайты) или t (терабайты). Поскольку 64k является минимальным размером разделения, числами без значения по умолчанию множителей к мегабайтам. Например, для создания разделения архивируют названное нечто с содержанием каталога панели с разделениями 670 МБ, которые могли бы быть полезны для записи на CD, команды:

архивируйте-s 670 м-r панель нечто

мог использоваться.

Гарантировать целостность данных, rsync с проверкой контрольной суммы. Это намного медленнее, но вычислит контрольную сумму с обеих сторон передачи.

- c, - контрольная сумма

Это изменяет путь rsync проверки, если файлы были изменены и нуждаются в передаче. Без этой опции rsync использует lqquick checkrq, который (по умолчанию) проверяет, соответствует ли размер каждого файла и время последнего изменения между отправителем и получателем. Эта опция изменяет это для сравнения 128-разрядной контрольной суммы для каждого файла, который имеет размер соответствия. Генерация контрольных сумм означает, что обе стороны израсходуют много диска ввод-вывод, считывающий все данные в файлах в передаче (и это до любого чтения, которое будет сделано для передачи измененных файлов), таким образом, это сможет значительно замедлить вещи.

От: man zip, man rsync

1
27.01.2020, 23:39

непротестированный

cd /the/directory
files=(*)
i=0
z=0
create_zip=true
for ((i=0; i<${#files[@]}; i++)); do
    if $create_zip; then
        ((z++))
        zip_file=prefix.$z.zip
        create_zip=false
    fi
    # add the file
    zip $zip_file "${files[i]}"
    # check the size
    if (( $(stat -c %s $zip_file) >= 50000000 )); then
        # remove the previous file
        zip -d $zip_file "${files[i]}"
        create_zip=true
        # decrement the file index so this file gets added to the next zip
        ((i--))
    else
        echo rm "${files[i]}"            ### remove "echo" if it's OK
    fi
done
0
27.01.2020, 23:39
  • 1
    Так в основном продолжайте создавать архивы zip, пока каждый не больше, чем 50 МБ, затем используйте последний? Походит на отличный способ потратить впустую циклы ЦП и диск IO. –  Sammitch 23.08.2013, 23:36

Теги

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