LINUX.ORG.RU

Привет! Хочется красиво и лаконично дать задание rsync'у

 , ,


0

1

На хостинге у меня 9 проектов, из них 7 – на движке DokiWiki. В двух ссылках ниже вместо bilge-ru должно быть одно из списка:

bilge-ru
dragonserw-ru
gibibyte-ru
honeybeegood-ru
sokhumi-ru
yeya-ru
yeysk-su
/home/hosting/project/bilge-ru/htdocs/data/media
/home/hosting/project/bilge-ru/htdocs/data/pages

Мне нужен бэкап обоих директорий /media и /pages с подкаталогами из каждого моего проекта DokuWiki, с сохранением структуры директорий.

Подскажите, пожалуйста, как загнать в скрипт эти две директории для 7-и проектов, либо же может быть можно вручную вбить эти директории в список.txt и по тому списку производить ручной бэкап всех этих директорий через ssh? Я могу при помощи Calc составить список директорий, это не проблема для меня, но вот как скормить этот текстовый список rsync’у?

Или же, повторюсь, как-то в цикл загнать имена проектов и директорий.

В общем, бэкапы р-синком я умею делать, но не так, как хочется в этот раз ))


поставь syncthing. подключи все директории туда.

вар2: скрипт который парсит файлик со списком директорий и скармливает рсинху

pfg ★★★★★
()
#!/usr/bin/env sh
prefix=/home/hosting/projects/bilge-ru/htdocs/data
ziptmp=/tmp
zipnam=/media_data-`date +%s`.zip
cd $prefix && zip -9 -r $ziptmp/$zipnam media pages
scp $ziptmp/$zipnam username@hostip:/home/username/backups/$zipnam
LINUX-ORG-RU ★★★★★
()

либо же может быть можно вручную вбить эти директории в список.txt

конечно можно, а почему ж нельзя? и прогнать rsync’ом по всем директориям. ему ж без разницы.

flant ★★★★
()
Последнее исправление: flant (всего исправлений: 1)
Ответ на: комментарий от LINUX-ORG-RU

О, это очень красиво выглядит, громадное спасибо! :)

Еще у меня вопрос: там ведь 7 корневых директорий, я их указывал списком. Как расширить ваш скрипт так, чтобы он паковал 7 различных архивов, для каждого проекта п иархиву? :-)

SerW
() автор топика
Ответ на: комментарий от SerW
#!/usr/bin/env lua

local sites = 
{
    tmp  = "/tmp/"..os.time().."/";
    --------------------------------
    ssh  = "USER@HOST:/home/USER/backup"; --каталог backup обязан быть создан заранее, на хосте приёмнике
    --------------------------------
    root = "/home/hosting/project/";
    --------------------------------
    postfix = "/htdocs/data/";
    --------------------------------
    list =
    {
        'bilge-ru';
        'dragonserw-ru';
        'gibibyte-ru';
        'honeybeegood-ru';
        'sokhumi-ru';
        'yeya-ru';
        'yeysk-su';
    };

    --------------------------------
    content = "media pages";
    --------------------------------
}

function sites:backup()
    os.execute("mkdir "..self.tmp);
    for _,site in pairs(self.list) do
        print("[zip] pack -> "..site.." to "..self.tmp..site..".zip");
        os.execute("cd "..self.root..site..self.postfix.."&& zip -9 -r "..self.tmp.."/"..site..".zip "..self.content);
    end
    print("[scp] send -> "..self.ssh);
    os.execute("scp -r "..self.tmp.." "..self.ssh..'/'..os.time());
    os.execute("rm -rd "..self.tmp);
end

sites:backup();
dron@gnu:~/back$ chmod +x backup.lua 
dron@gnu:~/back$
dron@gnu:~/back$ ./backup.lua 
[zip] pack -> bilge-ru to /tmp/1682437761/bilge-ru.zip
  adding: media/ (stored 0%)
  adding: pages/ (stored 0%)
[zip] pack -> dragonserw-ru to /tmp/1682437761/dragonserw-ru.zip
  adding: media/ (stored 0%)
  adding: pages/ (stored 0%)
[zip] pack -> gibibyte-ru to /tmp/1682437761/gibibyte-ru.zip
  adding: media/ (stored 0%)
  adding: pages/ (stored 0%)
[zip] pack -> honeybeegood-ru to /tmp/1682437761/honeybeegood-ru.zip
  adding: media/ (stored 0%)
  adding: pages/ (stored 0%)
[zip] pack -> sokhumi-ru to /tmp/1682437761/sokhumi-ru.zip
  adding: media/ (stored 0%)
  adding: pages/ (stored 0%)
[zip] pack -> yeya-ru to /tmp/1682437761/yeya-ru.zip
  adding: media/ (stored 0%)
  adding: pages/ (stored 0%)
[zip] pack -> yeysk-su to /tmp/1682437761/yeysk-su.zip
  adding: media/ (stored 0%)
  adding: pages/ (stored 0%)
[scp] send -> dron@localhost:/home/dron/
yeysk-su.zip                                                                                 100%  302   517.4KB/s   00:00    
yeya-ru.zip                                                                                  100%  302   542.8KB/s   00:00    
bilge-ru.zip                                                                                 100%  302   630.5KB/s   00:00    
gibibyte-ru.zip                                                                              100%  302   353.4KB/s   00:00    
sokhumi-ru.zip                                                                               100%  302   432.8KB/s   00:00    
honeybeegood-ru.zip                                                                          100%  302   505.6KB/s   00:00    
dragonserw-ru.zip                                                                            100%  302   432.7KB/s   00:00    
LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)

Так у rsync'а свои же опции для таких целей есть

Например: rsync -av --include-from=DirectoriesToCopy.txt --include /data/ --exclude='/data/*' --exclude='/*/' / /media/MyDestination/

kontranik
()
Ответ на: комментарий от bga_

Понятия не имею =) Попробуй, я что в голову пришло то и прописал.

LINUX-ORG-RU ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.