Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Witam.
Mam od jakiegoś czasu chmurę NextCloud postawioną na Rapsberry Pi 4. Wszystko ładnie chodzi, na bieżąco wykonuje kopie wybranych katalogów z laptopa i komórek. Jednocześnie zdaję sobie sprawę, że Raspberry Pi 4 z jakimś tanim dyskiem ssd nie jest zbyt pewnym i niezawodnym rozwiązaniem. Mam wykupiony VPS (postawiłem na nim VPN) i zastanawiam się nad wykorzystaniem go do tworzenia kopii.
Jak to zrobić, aby po ewentualnej awarii mojej chmury (załóżmy, że padnie dysk) i ponownej konfiguracji systemu w łatwy sposób przywrócić dane?
Offline
Offline
Sprawdzałem to. Jest do tego aplikacja. Niby coś tworzy, ale nie pokazuje gdzie i nie ma opcji wysłania na zewnętrzny serwer. Myślałem, że da się to jakoś bardziej zautomatyzować.
Ostatnio edytowany przez Grabek (2020-04-09 09:39:13)
Offline
cron + podmontowany zasób zdalny leżący na zewnętrznym serwerze lub z użyciem ssh.
Ostatnio edytowany przez arecki (2020-04-09 09:46:22)
Offline
Będę myślał nad tym. Zastanawia mnie ten fragment z linku powyżej:
Backup folders Simply copy your config, data and theme folders (or even your whole Nextcloud install and data folder) to a place outside of your Nextcloud environment. You could use this command: rsync -Aavx nextcloud/ nextcloud-dirbkp_`date +"%Y%m%d"`/
Czy w ten sposób skopiuje wszystko? To znaczy, czy w razie awarii i ponownej czystej instalacji Nextcloud wystarczy to przywrócić, aby mieć dostęp do wcześniejszej konfiguracji i zapisanych plików?
Mam wykupiony VPS na Debianie. Czy wystarczy, że utworzę na nim udostępniony katalog? Loguję się do niego przez SSH. Czy będzie to bezpieczne?
Ostatnio edytowany przez Grabek (2020-04-09 09:50:03)
Offline
Zapomniałeś o bazie danych.
Zdefiniuj bezpieczne.
Offline
Czyli potrzebuje jeszcze
sqlite3 data / owncloud.db .dump> nextcloud-sqlbkp_`date + "% Y% m% d" .bak
Co rozumiesz poprzez pojęcie "Zdefiniuj bezpieczne"?
Offline
https://pl.wikipedia.org/wiki/Poj%C4%99cie
https://pl.wikipedia.org/wiki/Definicja
Definicja (z łac. definitio; od czas. definire: de + finire, „do końca, granicy”; od finis: granica, koniec) – wypowiedź o określonej budowie, w której informuje się o znaczeniu pewnego wyrażenia przez wskazanie innego wyrażenia oddającego sens sformułowania.
Ostatnio edytowany przez arecki (2020-04-09 10:23:46)
Offline
Wiem co znaczy słowo " definicja" Ale nadal nie wiem o co Ci chodziło.
Offline
1.
Utworzyłem na zdalnym serwerze nowego użytkownika (żeby jako root się nie logować). Ale mam problem. Zgodnie z opisem na https://docs.nextcloud.com/server/stable/admin_manu … e/backup.html należy przejść w tryb konserwacji, ale po wydaniu polecenia
$ sudo -u www-data php occ maintenance:mode --on
otrzymuje komunikat: "Could not open input file: occ"
Podejrzewam, że jest zła lokalizacja. Plik occ znalazłem w /var/www/html/nextcloud. Jednakże polecenie (jako root)
var/www/html/nextcloud/occ maintenance:mode --on
daje odpowiedź: "Brak dostępu"
2. Jak już uporam się punktem 1, to nastepnie należy skopiować folder z konfiguracją
rsync -Aavx nextcloud/ nextcloud-dirbkp_`date +"%Y%m%d"`/
I teraz nie wiem, czy dobrze rozumiem. Chodzi o folder w którym mam zapisaną konfigurację i konta poszczególnych użytkowników (tam też znajdują się ich skopiowane pliki).
Następnie kopia bazy danych. Korzystam z SQLite.
sqlite3 data/owncloud.db .dump > nextcloud-sqlbkp_`date +"%Y%m%d"`.bak
Jednakże plik owncloud.db znajduje się w tym samym folderze, co konfiguracja kont i profile użytkowników. Więc chyba wystarczy jak utworzę tylko kopię folderu data (tam wszystko jest). No chyba, że się mylę i potrzebuje coś jeszcze?
Edycja
Poradziłem sobie z punktem 1. Zastanawia mnie teraz punkt drugi. Podpowiedzcie czy dobrze myślę: chcę napisać skrypt, który najpierw przełączy w tryb konserwacji, następnie wykona kopie i wyłączy tryb konserwacji. Nie mam w tym doświadczenia, ale przełączyć w tryb konserwacji i wykonać kopie będzie łatwo. Zastanawia mnie co z wyłączeniem trybu konserwacji? Czy jeśli dam go bezpośrednio po komendzie kopiowania to polecenie przełączenia poczeka na zakończenie kopiowania? Skrypt oczywiście później do Crona i można zapomnieć.
Ostatnio edytowany przez Grabek (2020-04-09 18:26:22)
Offline
Coś przekombinowaleś z tym rsynciem u Siebie :P
Mam takiego skrypcia, robi bakcupy vpsa na lokalny komp.
Działa dosyć grzecznie.
#!/bin/bash echo $$ >> /cgroup/net_cls/users/netout/tasks VPSHOST="51.68.138.154"; BACKUPDIR="/home/Serwery/vps115645.ovh.net/" DBUSER="robot"; DBPASS="E8zAN9XPlmbTXk5gB66dmofdoirlqRmflYPUdGScXymKY18tVIUknbiFqHirZZ4dz"; mysqldump --ssl -h $VPSHOST -u $DBUSER -p$DBPASS --single-transaction --all-databases |xz > $BACKUPDIR/mysqldb/all.sql.gz mysqldump --ssl -h $VPSHOST -u $DBUSER -p$DBPASS --single-transaction --all-databases --add-drop-table |xz > $BACKUPDIR/mysqldb/all-drop.sql.xz mysqldump --ssl -h $VPSHOST -u $DBUSER -p$DBPASS --single-transaction --add-drop-table mysql |xz > $BACKUPDIR/mysqldb/mysql-drop.sql.xz mysqldump --ssl -h $VPSHOST -u $DBUSER -p$DBPASS --single-transaction --add-drop-table mailsql |xz > $BACKUPDIR/mysqldb/mailsql.sql.xz mysqldump --ssl -h $VPSHOST -u $DBUSER -p$DBPASS --single-transaction --add-drop-table prosody |xz > $BACKUPDIR/mysqldb/prosody.sql.xz mysqldump --ssl -h $VPSHOST -u $DBUSER -p$DBPASS --single-transaction --add-drop-table spamd |xz > $BACKUPDIR/mysqldb/spamd.sql.xz mysqldump --ssl -h $VPSHOST -u $DBUSER -p$DBPASS --single-transaction --add-drop-table wordpress503 |xz > $BACKUPDIR/mysqldb/wordpress503.sql.xz mysqldump --ssl -h $VPSHOST -u $DBUSER -p$DBPASS --single-transaction --add-drop-table rmail1 |xz > $BACKUPDIR/mysqldb/rmail1.sql.xz mysqldump --ssl -h $VPSHOST -u $DBUSER -p$DBPASS --single-transaction --add-drop-table rmail2 |xz > $BACKUPDIR/mysqldb/rmail2.sql.xz mysqldump --ssl -h $VPSHOST -u $DBUSER -p$DBPASS --single-transaction --add-drop-table baikal1 |xz > $BACKUPDIR/mysqldb/baikal1.sql.xz rsync -aAXvx --progress -e ssh vps:/usr/local/sbin/ $BACKUPDIR/local/sbin/; rsync -aAXvx --progress -e ssh vps:/usr/local/bin/ $BACKUPDIR/local/bin/; rsync -aAXvx --progress -e ssh vps:/etc $BACKUPDIR/etc/; rsync -aAXvx --progress -e ssh vps:/home/www/ $BACKUPDIR/www/;
Przerobić go możesz dowolnie.
Pozdro
Offline
Dzięki. Myślę, że wykorzystam.
Z tego co widzę, to uruchamiasz go na lokalnym kompie i pobiera dane z vpsa? Ja chcę zrobić to odwrotnie. Lokalna chmura ma wysyłać kopie na zewnętrzny vps. Zainteresowały mnie te... nie wiem jak to nazwać, zmienne? I mam kilka pytań.
echo $$ >> /cgroup/net_cls/users/netout/tasks -
O co chodzi...?
VPSHOST="51.68.138.154";
Domyślam się, że to adres serwera z którym się łączysz.
BACKUPDIR="/home/Serwery/vps115645.ovh.net/"
Miejsce zapisu kopii?
DBUSER="robot";
Użytkownik... To użytkownik bazy MySQL?
DBPASS="E8zAN9XPlmbTXk5gB66dmofdoirlqRmflYPUdGScXymKY18tVIUknbiFqHirZZ4dz";
Hasło tego użytkownika bazy MySQL?
Ja korzystam z SQLite więc chyba nie potrzebuje?
mysqldump --ssl -h $VPSHOST -u $DBUSER -p$DBPASS --single-transaction --all-databases |xz > $BACKUPDIR/mysqldb/all.sql.gz
Ten i kolejne wiersze. Chodzi o kopie bazy danych? Dlaczego nie jest użyte polecenie RSYNC?
rsync -aAXvx --progress -e ssh vps:/usr/local/sbin/ $BACKUPDIR/local/sbin/;
Ten wiersz i pozostałe.... vps:/usr/local/sbin Scieżka vps:/... do czego się odnosi? Nie widzę, żeby gdzieś była taka zmienna zdefiniowana?
Offline
rsync -aAXvx --progress -e ssh vps:/usr/local/sbin/ $BACKUPDIR/local/sbin/;
vps to adres serwera z którego jest pobierany backup, jego Ip jest przypasany do tej nazwy w pliku /etc/hosts.
echo $$ >> /cgroup/net_cls/users/netout/tasks
Domyślnie powłoka bash nie ma w ogóle u mnie wyjazdu na internet, chyba ze PID procesu zostanie dodany do cgroup - grupy netout, wtedy kontroler net_cls pozwoli na wyjazd do netu tego konkretnego procesu.
To taki prosty sposób na filtrowanie ruchu wychodzącego z kompa przez wykorzystanie podsystemu i kontrolerów cgroup.
Kontroler net_cls jest uwzgldęniony w w cgroup v1 ale nie ma go w nowszej wersji cgroup v2.
VPSHOTS to faktynczie zmienna z adresem zdalnego hosta.
rsync pobiera pliki ze zdalnego serwera.
mysqldump robi bezpośrednie zrzuty baz danych z serwera Mysql, obecnie Mariadb zazwyczaj.
w innych zmiennych jest miedzy innymi użytkownik i hasło do baz danych SQL, umożliwiające połączenie ze zdalenym serwerem MySQL.
To by było na tyle
Offline
1. Mam pytanko. jakie parametry podać po rsync? Chodzi mi, aby utworzyło kopie i przy następnym razie porównało pliki i wysłało na serwer tylko te nowe. Jednocześnie jak usunę jakieś pliki z chmury, to chciałbym, żeby je z kopii wywaliło.
2. Chciałbym żeby tworząc kopie nie logować się na konto root. Utworzyłem w tym celu nowego użytkownika, ale chyba nie mam dostępu:
sending incremental file list
rsync: recv_generator: mkdir "/home/kopia/test/Downloads" failed: Permission denied (13)
*** Skipping any contents from this failed directory ***
Downloads/
sent 226 bytes received 175 bytes 160.40 bytes/sec
total size is 1,314,751 speedup is 3,278.68
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1207) [sender=3.1.3]
Jak dodać uprawnienia dla użytkownika zdalnego?
Ostatnio edytowany przez Grabek (2020-04-10 14:58:59)
Offline
Użytkownik systemowy, na którego rsync się loguje po ssh musi mieć rekursywne prawa zapisu folderu,
do którego chcesz robić backup...
Reasumując, RTFM:
man chmod
man umask
Przyda się też:
man rsync
To by było na tyle
PS:
rsync ma nakładkę graficzną grsync, jest w repo, obsługiwany myszką.
Dzięki opcji symulacji działania można nieźle poznać wszystkie opcje rsynca,
Ostatnio edytowany przez Jacekalex (2020-04-10 17:06:27)
Offline
Nie jarzę jakoś tego umask... Rozwiązałem to za pomocą
chmod 777 /katalog -R
Napisałem taki skrypt. Proszę o ocenę
#!/bin/bash cd /var/www/html/nextcloud/ sudo -u www-data php occ maintenance:mode --on sqlite3 /var/www/nas/nextcloud/data/owncloud.db kopia@**.**.***.*:/home/kopia/raspberry sudo rsync -aAXvx --delete --exclude=”owncloud.db” -e 'ssh -p ****' /var/www/nas/nextcloud/data kopia@**.**.***.*:/home/kopia/rasberry cd /var/www/html/nextcloud/ sudo -u www-data php occ maintenance:mode --off
Zastanawiam się czy nie dodać jeszcze opcji kompresji? Teraz tylko to do Crona wrzucę i niech uruchamia się co noc.
Pliki się kopiują, ale na początku dostałem taki komunikat
Maintenance mode enabled
Error: near "kopia": syntax error
sending incremental file list
Co to za błąd?
Edit
Jestem już w trakcie kopiowania i widzę, że skopiowało plik owncloud.db Miał być wykluczony. Co zrobiłem źle?
Ostatnio edytowany przez Grabek (2020-04-10 21:00:44)
Offline
w twoim kodzie skryptu jest:
--exclude=”owncloud.db”
a powinno być jeśli już:
--exclude="owncloud.db"
nie ” tylko "
ewentualnie po prostu:
--exclude='owncloud.db'
albo nawet w tym przypadku
--exclude=owncloud.db
w jakim programie pisałeś ten skrypt?
drugie cd /var/... jest niepotrzebne.
Bardziej eleganckie jest korzystanie z configów ssh. Wygląda to tak, że tworzysz (lub edytujesz) plik $HOME/.ssh/config (korzystasz z sudo, więc $HOME=/root) i wpisujesz tam taką treść:
Host ALIAS_SERWERA HostName ADRES_IP_SERWERA Port PORT_SSH_SERWERA User NAZWA_USERA_SERWERA
potem próba, czy działa - powinno połączyć się z danym serwerem:
sudo ssh ALIAS_SERWERA
jeżeli łączy w porządku, to można wtedy korzystać, również w przypadku rsynca z prostszej komendy:
sudo rsync -aAXvx --delete --exclude=owncloud.db /var/www/nas/nextcloud/data ALIAS_SERWERA:/home/kopia/rasberry
Co do tego błędu - odpal skrypt komendą:
bash -x ./nazwa_skryptu
i wklej wynik.
Ostatnio edytowany przez seler (2020-04-11 01:23:43)
Online
Co do tego błędu - odpal skrypt komendą:
Kod:
bash -x ./nazwa_skryptu
i wklej wynik
cd /var/www/html/nextcloud/ + sudo -u www-data php occ maintenance:mode --on Maintenance mode enabled + sudo sqlite3 /var/www/nas/nextcloud/data/owncloud.db .dump ./kopia.sh: linia 5: VPS:/home/kopia/raspberry/sqlite3: Nie ma takiego pliku ani katalogu + sudo rsync -aAXvx --delete --exclude=owncloud.db --progress -e 'ssh -p *****' /var/www/nas/nextcloud/data VPS:/home/kopia/raspberry/sqlite3 sending incremental file list data/ data/nextcloud.log 11,249,258 100% 97.50MB/s 0:00:00 (xfr#1, ir-chk=1016/1021) sent 1,772,740 bytes received 32,550 bytes 212,387.06 bytes/sec total size is 13,741,644,604 speedup is 7,611.88 + sudo -u www-data php occ maintenance:mode --off Maintenance mode disabled
Tak jakby bazy sqlite3 nie mógł skopiować. Wcześniej był jeszcze błąd składni. Brakowało .dump > A może to kwestia portu? Zmieniłem port dla ssh. Gdzie go dopisać? Chyba, że tu jakiegoś innego używa i zapora blokuje?
Jak zmienię adres tak jak w opisie na https://docs.nextcloud.com/server/stable/admin_manu … e/backup.html
#!/bin/bash
cd /var/www/html/nextcloud/
sudo -u www-data php occ maintenance:mode --on
sudo sqlite3 /var/www/nas/nextcloud/data/owncloud.db .dump > nextcloud-sqlbkp_`date +"%Y%m%d"`.bak
#sudo rsync -aAXvx --delete --exclude='owncloud.db' --progress -e 'ssh -p *****' /var/www/nas/nextcloud/data VPS:/home/kopia/raspberry
sudo -u www-data php occ maintenance:mode --off
to niby bez błędu, ale nie mam kopii
+ cd /var/www/html/nextcloud/ + sudo -u www-data php occ maintenance:mode --on Maintenance mode enabled + sudo sqlite3 /var/www/nas/nextcloud/data/owncloud.db .dump ++ date +%Y%m%d + sudo -u www-data php occ maintenance:mode --off Maintenance mode disabled
Tak jakby w podanej lokalizacji nie mógł zapisać. Ale pozostałe dane się tam zapisują.
Edycja
Nie ma problemu, żeby zrobić kopie na dysku lokalnym. Tak jakby nie łączyło do vpsa.
Ostatnio edytowany przez Grabek (2020-04-11 20:23:58)
Offline
pokaż zawartość /root/.ssh/config
Masz tam wpis VPS?
Jeżeli tak, to spróbuj połączyć się z vps komendą
sudo ssh VPS
jeżeli działa to z polecenia rsynca wywal parametr
-e 'ssh -p *****'
polecenie sqlite3 /var/www/nas/nextcloud/data/owncloud.db .dump jest chyba niekompletne, nie?
Online
Powinno być:
var/www/nas/nextcloud/data/owncloud.db .dump > kopia.db
Ale tak się teraz zastanawiam. Bo jak robię lokalnie to mi tworzy kopie. Ale to jest baza sqlite i to jest jeden plik. Przed wywołaniem rsync przechodzę w tryb konserwacji, czyli nic nie jest zapisywane w bazie. Nie można po prosto tego pliku z resztą skopiować?
Offline