company_banner

Бюджетное решение для бэкапа целого офиса



    Большинство статей в наш блог пишут разработчики. Мы решили исправить эту несправедливость и добавить немного DevOps. Сегодня поговорим о важном ― о бэкапах.
    Так как Badoo активно развивается и количество сотрудников постоянно увеличивается, мы пришли к выводу, что централизованное резервное копирование гораздо удобнее, чем частичное копирование и хранение информации в различных местах.
    В статье мы рассмотрим, как различными способами «забэкапить» довольно большое количество рабочих станций с помощью одного хранилища, не прибегая к серьёзным вложениям и избегая громоздкой реализации.
    Заранее оговоримся, что бэкап не охватывает 100% сотрудников, так как не все хранят свои данные на локальных машинах, поэтому у нас не было цели сделать бэкап обязательно-принудительным.
    Одной из основных сложностей централизованного бэкапа стало то, что сотрудники используют разные операционные системы.

    Как же мы смогли собрать всех на одном сервере?


    Примерная статистика, основанная на использовании нашей системы:
    Mac OS ~ 66%;
    Linux ~ 27%;
    Windows ~ 7%.

    А теперь подробнее, что скрывается за этими тремя ОС и каким образом мы будем настраивать их у пользователя.
    1) Mac OS ― через Time Machine (в последних версиях Mac OS поддерживается из коробки, ниже 10.6 у нас просто нет), на стороне сервера — Netatalk;
    2) Windows ― стандартными средствами через «Архивация и восстановление» (Backup and restore), на стороне сервера — Samba;
    3) Linux ― несколько вариантов: samba, rsync (доступ по паролю); полноценный ssh отключён за ненадобностью и в целях безопасности.

    Забежим вперёд и покажем, как будет выглядеть интерфейс управления пользователями, которые нуждаются в бэкапе:



    Администратору нужно выбрать уже существующую учетную запись или завести новую, сгенерировать пароль и указать тип операционной системы.

    Аппаратная часть


    В качестве хранилища был собран сервер с 24 дисками по 3.5 дюйма и 3 TБ ― большой объём за малые деньги.
    Каждый диск монтируется отдельно, RAID или LVM не используется ― при выходе из строя одного из дисков его можно быстро заменить; также решается вопрос с недостатком свободного места: из всех дисков мы выжимаем максимум объёма.
    «Что будет, если умрёт один из дисков, на котором были бэкапы пользователей?» ― спросите вы. Попросим забэкапиться ещё раз после замены диска. Вероятность того, что один из 24 дисков умрёт вместе с ноутбуком сотрудника, действительно мала. В крайнем случае мы попытаемся восстановить утраченную информацию.
    Главная функция сервера ― хранение информации, поэтому описывать CPU и память не имеет смысла, любые современные процессоры справятся с этим заданием.

    Готовим диски


    Форматируем и монтируем каждый диск:
    parted /dev/sd${i} -s mklabel gpt
    parted /dev/sd${i} mkpart primary 0GB 2996GB
    mkfs.ext3 /dev/sd${i}1
    

    Удаляем зарезервированное пространство суперпользователя:
    tune2fs -m 0 /dev/sd${i}1
    

    В /etc/fstab для каждого раздела прописываем
    UUID=${UUID}          /storage/sd${i}1           ext3        noatime,acl,user_xattr,usrquota             0 0
    

    В итоге получаем диски, смонтированные в директорию /storage/sd${i}, где ${i} ― одна из букв нашего диска.

    Монтировать диски лучше с привязкой по UUID, т.к. не исключено «перемешивание» дисков, а с таким количеством устройств нам придётся долго восстанавливать правильные пути после внезапной перезагрузки сервера.
    Всех пользователей мы будем ограничивать квотой в файловой системе стандартными средствами Linux, поэтому подготовим для этого диски:
    quotacheck -cu /storage/sd${i}
    


    Программная часть


    Netatalk

    В данном решении самое сложное ― Mac OS X, поэтому начнём с настройки afp.
    Установим необходимые пакеты:
    rpm -Uvh libdb-4_8-4.8.30-18.6.x86_64.rpm
    rpm -Uvh db-utils-4.8.30-18.6.x86_64.rpm
    rpm -Uvh netatalk-2.2.4-3.7.x86_64.rpm
    rpm -Uvh netatalk-devel-2.2.4-3.7.x86_64.rpm
    


    Netatalk будем использовать версии 2.*, т.к. в версии 3.* не поддерживается использование переменных в указаниях путей (http://netatalk.sourceforge.net/3.0/htmldocs/afp.conf.5.html, раздел VARIABLE SUBSTITUTIONS: The use of variables in paths is not supported for now).

    Стоит заметить, что пакет Netatalk мы собирали со следующими флагами:
    --with-cracklib
    --with-bdb
    --enable-tcp-wrappers
    --enable-zeroconf
    


    В /etc/netatalk/AppleVolumes.default добавим строчку

    ~/TimeMachine "BackupMachine" allow:@backupuser cnidscheme:dbd options:usedots,upriv,tm volsizelimit:250000 dbpath:/local/netatalk/db/$u
    

    в которой:

    allow:@backupuser ― разрешает подключаться пользователям, находящимся в группе backupuser;
    BackupMachine ― имя, которое будет отображаться как подключённый диск, физически смонтированный в ~/TimeMachine относительно пользователя;
    volsizelimit:250000 ― ограничит пользователя квотой в 250 гб, но только если пользователю не задана системная квота. Т.к. в нашем случае мы используем системные квоты, эта опция бесполезна;
    tm ― обязательная опция, позволяет TimeMachine на стороне клиента распознать выделенный ресурс, как валидный для бэкапа;
    dbpath:/local/netatalk/db/$u ― путь к информации по метаданным пользователя. Нужна в том случае, когда строится список директорий и файлов, которые мы забэкапили. Будет практичней, если это вынести на отдельный диск, например, на SSD;
    переменная $u подставляет имя пользователя, которое нам так нужно и не работает в третьей версии.

    Включаем логирование afpd.
    В /etc/nettalk/afpd.conf добавим строчку
     -setuplog "default log_info /var/log/afpd.log" -keepsessions -transall -savepassword
    

    в которой:
    keepsessions ― сохраняет сессии при выключении afpd;
    transall ― включает оба протокола ― AFP-over-Appletalk и AFP-over-TCP;
    savepassword ― позволяет запомнить пароль пользователя в локальном keychain (без этой опции TimeMachine в Mac OS 10.8 не работает).

    В /etc/netatalk/netatalk.conf
    увеличим максимальное количество пользователей до 100
    AFPD_MAX_CLIENTS=100
    


    С Netatalk закончили. Подключиться можно стандартным приложением Time Machine, используя адрес вида afp://%SERVERNAME%/

    Samba

    Samba будет использоваться для подключения как в Windows, так и в Linux.
    Настройка довольно проста: в /etc/samba/smb.confдобавляем

    [global]
            security = user
            workgroup = Badoo
            netbios name = BadooBackup
            local master = no
            domain master = no
            preferred master = no
            socket options = TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE SO_RCVBUF=8192 SO_SNDBUF=8192
    [homes]
            comment = Home Directories
            valid users = %S
            writable = yes
            create mask = 0700
            directory mask = 0700
            browseable = No
            read only = No
    


    На этом настройка закончена. В Windows можно подключаться через «Проводник», в Linux ― автоматически монтировать при входе в систему.

    Управление доступом


    Итак, мы закончили с аппаратной частью и приложениями. Осталось разобраться с тем, как предоставлять пользователям несколько способов доступа.
    Система управления пользователями у нас уже есть, значит, будем использовать привычные для нас манифесты Puppet.

    Данные о пользователях будем хранить в интуитивно понятной таблице MySQL:
    | backupusers | CREATE TABLE `backupusers` (
      `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
      `uid` int(11) NOT NULL,
      `username` varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL,
      `backup_username` varchar(64) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
      `backup_server` varchar(32) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'backupmsk',
      `password` varchar(100) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
      `password_smb` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
      `shell` varchar(32) COLLATE utf8_unicode_ci NOT NULL DEFAULT '/bin/false',
      `map_drive` varchar(6) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'sdc',
      `quota` int(5) NOT NULL DEFAULT '250',
      `sftp` tinyint(1) NOT NULL DEFAULT '0',
      `isactive` tinyint(1) NOT NULL DEFAULT '0',
      `os` int(1) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci | 
    


    Фреймворк записывает данные именно в эту таблицу.
    Несколько особенностей:
    поле `map_drive` ― названия сервера и диска, которые будут использоваться для текущего пользователя. Не задается администратором, распределяется автоматически в зависимости от занятого места в том или ином разделе и на сервере. Если места для кого-то хватать не будет, то данные будут перенесены в другой раздел;
    поле `isactive` показывает, разрешено ли сотруднику пользоваться сервером для бэкапа. Если все ОС будут неактивны, перейдёт в значение 0. Данные пользователя при этом не удалятся (полезно, например, при потере ноутбука);
    поле `sftp` позволяет пользователю использовать rsync (об этом ниже). Этот способ позволит «продвинутым» коллегам бэкапить свои данные, используя самописные скрипты.

    После обновления таблицы запускается скрипт, который генерирует манифест с данными для каждого пользователя.

    Для того чтобы удобно было управлять пользовательскими директориями, добавим функцию в наш манифест:

        define backupuser_dirs($name,$map_drive,$home="/home/${name}") {
            file {
                "$home": owner => $name, ensure => symlink, target => "/storage/${map_drive}/${name}", require => File["/storage/${map_drive}/${name}"];
                "/storage/${map_drive}/${name}": owner => $name, ensure => directory, backup => false, mode => 0711;
                "$home/TimeMachine": owner => $name, ensure => directory, backup => false, mode => 0711, require => File["$home"];
                }
        }
    


    А вот отрывок манифеста для Puppet одного из пользователей:

       @user { "i.ableev":
    	        ensure => $hostname ? { 
                    /^%servername%$/ => present,
    	# создаем пользователю доступ именно на этом сервере, где он явно объявлен
                    default => absent,
    	# во всех остальных случаях доступ, даже если он и был, отзывается
                    },  
            home    => "/home/i.ableev",
    	# указываем домашнюю директорию; (!) является симлинком на /storage/$map_drive/$name 
            uid     => "1217",
            groups => ['backupuser'],
    	# указываем, в какую группу добавить пользователя
            password     =>  'V2UgYXJlIGhpcmluZyEgaHR0cDovL2NvcnAuYmFkb28uY29tL2pvYnMvCg==',
    	# пароль используется при использовании Netatalk и rsync
            shell   => "/bin/false",
    	# отключаем пользователю shell, чтобы ограничить доступ по ssh
            }   
        @backupuser_dirs { "i.ableev":
            name => "i.ableev",
            map_drive =>"sdh",
    	# директория, в которой будет располагаться директория бэкапов пользователя вида /storage/$map_drive/$name
            require => User["i.ableev"];
            }   
        @exec { "i.ableev_quota":
                command => "/usr/sbin/setquota -u i.ableev 262144000 262144000 0 0 -a",
                # выделяем пользователю 250 гб … 
                path        => "/usr/sbin",
                    onlyif      => "/usr/bin/test `/usr/sbin/repquota -ua | /usr/bin/egrep '^i.ableev\s*' | /usr/bin/awk {'print \$4'}` -ne \"262144000\"",
                # … но выделяем её в том случае, если квота не равна 250 гб.
            }   
    @line { "i.ableev_smb":
    	# добавляем в файл /etc/samba/smbpasswd строчку вида:
    	# @user:$uid:$hash
                                file => '/etc/samba/smbpasswd',
                                line => 'i.ableev:1217:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:5CDA711BBD899465D8F57D12BDF2BF68:[U          ]:LCT-5058462B:',
    		# хеш пароля генерируется на этапе формирования манифеста скриптом
    	} 
    
    


    Теперь у пользователей есть возможность подключаться к серверу, используя Mac OS, Windows или Linux.

    rsync

    Для предоставления доступа через rsync (но не ssh), мы будем использовать chroot плюс ограниченный по возможностям shell. Манифест и функция в таком случае будут выглядеть несоколько иначе:

        define backupuser_dirs_sftp($name,$map_drive,$home) {
                file {
                    "/home/${name}": owner => $name, ensure => symlink, target => "${home}", require => File["$home"];
                    "$home": ensure => directory, owner => root, mode => 0755;
                    "$home/sftp": owner => $name, ensure => directory, backup => false, mode => 0711, require => File["$home"];
                    }
        }
    
                            @user { "i.ableev":
                                ensure => $hostname ? {
                                        /^backupmsk$/ => present,
                                        default => absent,
                                        },   
                                home    => "/storage/sdh/i.ableev",
                                uid     => "1217",
                                groups => ['backupuser'],
                                password     =>
    'V2UgYXJlIGhpcmluZyEgaHR0cDovL2NvcnAuYmFkb28uY29tL2pvYnMvCg==',
    		# задаём пароль для входа
                                shell   => "/bin/badooshell",
    		# ограниченный shell позволяет использовать только rsync
                                }    
                            @backupuser_dirs_sftp { "i.ableev":
                                name => "i.ableev",
                                map_drive =>"sdh",
                                home => "/storage/sdh/i.ableev",
    			# путь к директории ~/sftp ― туда будут складываться бэкапы
                                require => User["i.ableev"];
                                }    
                            @file { "/storage/sdh/i.ableev/bin":
    			# путь к chroot’у ― здесь будет лежать наш badooshell
                                ensure => directory,
                                recurse => true,
                                purge => true,
                                force => true,
                                backup => false,
                                owner => root,
                                group => root,
                                source => "puppet:///modules/officebackup/bin/";
    			# отсюда он скачивается
                                }    
                            @file { "/storage/sdh/i.ableev/lib64":
    	# минимальный набор библиотек, необходимый для работы  rsync: ld-linux-x86-64.so.2  libc.so.6  libpopt.so.0
                                ensure => directory,
                                recurse => true,
                                purge => true,
                                force => true,
                                backup => false,
                                owner => root,
                                group => root,
                                source => "puppet:///modules/officebackup/lib64/";
                                } 
    


    Все манифесты готовы.

    Результаты


    Что мы получили в итоге:
    • недорогой сервер с 72 терабайтами полезных данных;
    • на одном сервере находятся бэкапы всех типов операционных систем пользователей;
    • предоставлен доступ всем, кто хочет делать бэкапы.

    Enjoy!

    Илья Аблеев, ableev, сотрудник эксплуатации Badoo Development

    Оригинал комикса: dilbert.com/strips/comic/2007-11-21
    Badoo
    410.31
    Big Dating
    Share post

    Comments 46

      0
      В итоге получаем диски, смонтированные в директорию /storage/sd${i}, где ${i} ― одна из букв нашего диска.
      А как вы потом всё это объединяете в один массив?
        +1
        А они и не объединяют, поди программно отслеживает сколько свободно на каком диске и туда пишется! ИМХО
          +1
          да, почти так:

          — у каждого блочного устройства есть как минимум объем
          — для каждого устройства есть «карта пользователей»
          — gui при заведении нового пользователя предлагает «оптимальное» размещение, которое оператор может принудительно поменять (оптимальное исходя из оставшегося места, а также исходя из того, какое кол-во пользователей уже пишут в этот раздел)

          в случае удаления пользователя место очищается, происходят изменения в «карте» и все пошло-поехало дальше.
        0
        «Что будет, если умрёт один из дисков, на котором были бэкапы пользователей?» ― спросите вы. Попросим забэкапиться ещё раз после замены диска. Вероятность того, что один из 24 дисков умрёт вместе с ноутбуком сотрудника, действительно мала. В крайнем случае мы попытаемся восстановить утраченную информацию.


        Все верно, но ведь бэкапы применяются и для откатов. Вот будет клёво, когда вы забэкапите с сервера 1С-базы, диски грохнутся, а в этот момент вас попросят откатиться на недельку назад…
          +7
          для важной информации — иная стратегия бекапов, также как и место их хранения.
          В данном случае показан пример бекапа лептопов/рабочих станций.
          0
          Мы у себя используем смесь rsnapshot и Duplicati — рабочие станции на винде, макаоси и линуксах. Полёт нормальный уже который год. Пару раз требовалось откатиться — проблем не было. Разумеется, пользователи _вообще_ не задумываются о самом резервном копировании — всё автоматизировано.
            +2
            Ребят ну вы реально не ищите легких путей. Особенно здорово с головняком в 24 диска. При этом использование RAID6 даст приемлемую надежность и отсутствие
            «Что будет, если умрёт один из дисков, на котором были бэкапы пользователей?» ― спросите вы. Попросим забэкапиться ещё раз после замены диска. Вероятность того, что один из 24 дисков умрёт вместе с ноутбуком сотрудника, действительно мала. В крайнем случае мы попытаемся восстановить утраченную информацию.
              –1
              В данном случае нам не нужен рейд, о чём и было сказано. Если будет рейд — мы дольше будем ребилдиться, чем начинать процесс бэкапа пользователей на новый диск.
                +1
                Ничего что при ребилде у вас при этом данные пользователей не только не теряются, но еще и бекапиться без проблем можно? Опять же добавление hotspare проблему нам надо срочно поменять диск уберет.
                  0
                  Ребилдиться можно параллельно с бэкапом или восстановлением.
                    0
                    Да на лету все ребилдится прекрасно. :)

                    Вы, видимо, поддерживаете также и production badoo, и у вас инерция мышления. На production-сторадже действительно отдельные диски — самое эффективное решение, но для задачи бэкапов офиса raid6 подходит прекрасно.
                      0
                      мы достаточно рассказали о причинах такого применения, что не заставляет вас следовать по нашему пути.
                      в данном топике бОльший интерес представляет програмная составляющая, а не то есть ли RAID.
                        0
                        Аргумент про максимум объема принимается, OK :)
                  +2
                  Объединение в массив+дедубликация, полагаю, дала бы больше гибкости, удобства и в итоге пространства чем распихивание руками по 24 отдельным дискам.
                    0
                    дедубликация на такие обьемы требует солидное количество памяти на сервере, а в статье сказано про бюджетное решение!
                      0
                      Солидное это сколько гиг? А то 16 гиг сейчас вполне бюджетно посмотавить.
                        0
                        для ZFS вроде это значение 10Gb на 1Tb дедублицированных данных
                          0
                          l2arc?
                            0
                            Интересно за сколько выгорит SSD под l2arc на такой машине? Практического опыта с ZFS не имею!
                              0
                              Полагаю, там over 90% — операции чтения, сколько у вас данных заливается в день? Подсчитать примерное количество блоков(пусть по 64к), вычесть те что дедублицируются и умножить на 320 байт. Получим ежедневную запись на SSD, дальше смотрим сколько производители гарантируют жизни при каких объемах записи. В соседней вкладке 20гб/сутки и 5 лет ocz обещает.
                                0
                                Ну не у меня, я никакого отношения к badoo не имею! Насколько я понял их схему там как раз операций чтения то мало и они редки, там больше запись. И я думаю что периодически(раз в неделю\месяц) туда делаются полные снимки систем и далее только инкрементальный! Может создатель топика раскроет текущие обьемы записи в месяц!
                                  0
                                  Простите, почему-то подумал, что вы — автор. Про операции чтения я имел в виду именно обращения к таблице хешей для дедубликации а не запись данных.
                                  0
                                  На счёт «ненадежности» SSD у меня асус ееерс 701, купленный в апреле 2008 года, в мае на нём был разбит экран и он приспособлен под файлопомойку + качалка торрентов (freenas) Два винта по USB и кеш ZFS на SSD
                                  Я был уверен что диск умрёт, даже извещение о кончине настроил себе в мыло

                                  5 лет — жив
                        –2
                        Нет. Решение расчитано на то, что это и проще настраивать и проще в будущем поддерживать. Чуть выше про ребилд уже написал. Потерять на время малую часть данных, которая восстановится вполне быстро, оптимальнее, чем потерять большую часть.
                          +3
                          Ага по дискам в ручную распихивать данные проще чем один раз настроить RAID6 с hotspare и извещения о смерти диска.
                        0
                        А ещё интересно — к чему у вас эти 24 диска подключены?
                          0
                          вы это серьезно спрашиваете? вас что именно в подключении интересует?
                            0
                            Шасси, контроллер, сколько их, или вы мультипликторы используете? Это действительно очень интересно. Обычно такое количество дисков ставится только в специализированные хранилища.
                              0
                              бюджетный корпус Supermicro на 4U, LSI MegaRAID-контроллер (по-моему, до 128 устройств) + бекплейн, который идет вместе с корпусом. Повторюсь, что от контроллера нам не нужно большой отдачи, т.к. работает он напрямую с отдельным диском, не занимаясь подсчетом контрольных сумм, зеркалированием и прочим.
                              Т.е. изначально задача была такой:
                              — делать бекапы на рабочие станции и лептопы;
                              — охватить все ОС;
                              — не дорого;
                              — просто в эксплуатации (т.к. это все на поддержке HelpDesk);

                              в результате мы получили систему, которая отвечает всем нашим требованиям.
                                0
                                24-ти портовый MegaRAID? За $1.2k? Бюджетное решение? Если это он, то использовать его без RAID-а только как хост-контроллер, ну знаете.
                                  0
                                  на данном примере стоит вот это store.lsi.com/store.cfm/MegaRAID_Controllers/9265_Controllers/LSI00278, диски как JBOD
                                    0
                                    Хорошо, всего $700. Тогда ещё нужно шасси с экспандером на 24 порта. ИМХО — не бюджетно!
                                    Бюджетно, это когда натыкать SATA-multiplier-ов в штатные порты на материнской плате, или 6 штук копеечных 4-х портовых SATA-контроллеров.
                                    0
                                    понятие «бюджетное решение» в рамках того, сколько пользователей вам надо бекапить — трактоваться может по-разному. Если вам нужно бекапить 10 человек, то подойдет и обычнй tower, например, соотв. и бюджет будет сильно ниже. В данной статье автор уделил минимум внимания «железной» состовляющей, т.к. эта часть может очень сильно разниться. Цель — показать то, насколько просто можно реализовать удобную систему резервирования для офиса.
                                      +1
                                      Цель — показать то, насколько просто можно реализовать удобную систему резервирования для офиса.
                                      Тогда статью стоило бы назвать «Простое решение ...»? В «бюджетном» варианте названия, очень бы хотелось увидеть цифры (бюджет=цифры) — во сколько вам обошлась система, сколько стоит бэкап в пересчёте на одного пользователя, а также сравнение с не-бюждетными решениями. Хотя «простое», тоже не совсем подходит, так как вы придумали себе сложности в виде отказа от RAID-а и привязки пользователей к конкретным разделам. А как быть, если на каждом разделе останется по «хвостику», недостаточному для бэкапа очередного пользователя, но в сумме этих «хвостиков» хватит ещё на нескольких? Т.е. осталось по 200Гб хвостов (всего 200х24=4.8Тб свободного места!), а забекапить пользователя с его 300Гб вы уже не можете.
                                        0
                                        мы, мне кажется, достаточно сказали о причинах того, почему нет рейда. В случае, если у нас 24 диска по 3Tb каждый, то 4.8Tb — это не так много.
                              –3
                              Все очень просто!
                              image
                              basanovich.livejournal.com/163813.html
                                0
                                думаю, что если оно вам на самом деле интересно — автор может сделать фотографию машинки. Она сильно симпатичнее показаной вами.
                                  +1
                                  Зачем? Четырехюнитовый супермикро можно и на сайте посмотреть.
                              0
                              На мой взгляд, backuppc делает тоже самое и даже больше.
                                0
                                Идея осуществлять резервное копирование встроенными средствами представленный в заголовке ОС: Time Machine (OS X), Backup and restore (MS Windows), ну и что_угодно (Linux).
                                Backuppc + OS X — расскажите, пожалуйста, возможно, что мы что-то упустили.
                                  0
                                  а у вас виндовый бэкап работает? У меня нет. Не может закончить операцию. МС в курсе. фикса нет.
                                    0
                                    Да, пользователи бэкапятся, и тестировали несколько раз, как бэкап, так и рестор. Всё было в порядке, по-моему.
                                      0
                                      Ну вот для примера:
                                      social.technet.microsoft.com/Forums/en-US/w7itprogeneral/thread/3f96d794-df4a-47a3-9cb8-e210f4527005/

                                      Куча статей на эту тему… Бэкап либо вылетает, либо залипает…
                                        +1
                                        Впервые слышу. С windows проблем, на самом деле, меньше всего — бекап просто работает, абсолютно прозрачно для пользователя. Вот восстановление чуть менее тривиально, но тоже вполне работоспособно.
                                0
                                Хочу представить на суд exdupe
                                консольная утилита сжимает с поддержкой дедупликации на больших расстояниях.

                                Так базы 1С(каждодневные) 2ТБ ужимает до ~100Гб.
                                По скорости помню что упирается в основном в жесткий диск у меня было что-то в районе 50-70мб\с средняя скорость на Athlon || x2 1.6 ГГц.
                                А вот памяти 4Гб ставил.
                                Создает дифференциальные архивы.

                                прога бесплатная и регулярно обновляется. Мне страшно подумать что было бы если я винрар скормил 2Тб.
                                  0
                                  Написали бы статейку по использованию!

                                Only users with full accounts can post comments. Log in, please.