Backup stora fulla diskar med interface

Permalänk
Medlem

Backup stora fulla diskar med interface

Hej!
Söker en bra backup lösning.
Jag har två identiska filservrar här hemma. En som står på hela tiden och en som jag startar efter jag gjort ändringar alternativt en gång i månaden. Båda servrarna har flera stora hårddiskar och några av dom är alltid fulla.
Har kört ett program i några år som heter luckyBackup men är ej nöjd.

Det jag vill åstadkomma är att destinationen ska vara en EXAKT kopia från källan. Har jag tagit bort filer på källan ska dessa också tas bort från destinationen. Problemet blir när det är stora volymer som dessutom alltid är fulla, av någon anledning tas ibland inte filer bort från destinationen.
Har testat att lägga dubbla tasks i luckybackup, första vändan så går han igenom hela källan och jämför med destinationen, ska då överföra nya/ändrade filer och samtidigt ta bort filer från destinationen som inte finns längre på källan. Då klagar han att disken blir full troligtvis pga att han hittat nya filer som försöker överföras INNAN han hittat filer som tas bort = tok full disk.

Totalt har båda servrarna ca 50tb var, och vid varje backup brukar det kanske vara 30-500gb skillnad på varje disk, bland betydligt mindre. I nuläget tar backupen med luckybackup ca 2-3dygn att genomföra OAVSETT hur mkt ändringar jag gjort + att diskarna blir fulla...
Innan körde jag Cobian backup 11 på windows vilket jag gillade, myycket inställningar, vart alltid rätt MEN tog JÄVULSKT lång tid, nästan 1vecka...

Kör Linux mint, mina linux kunskaper är låga, därav som jag vill ha ett interface att navigera i.
Tacksam för hjälp!

Visa signatur

// Benz

Permalänk
Proffsmoddare

Tror https://syncthing.net skulle göra det du efterfrågar

Ang. prestanda så beror det ju på många olika saker, men de gånger jag kört det så har aldrig programmet i sig aldrig varit flaskhalsen

På linux hade jag personligen bara kört rsync, men om du tvunget måste ha ett gui så.

Visa signatur

"Computer games don't affect kids, I mean if PacMan affected us as kids, we'd all be running around in darkened rooms, munching pills and listening to repetitive music." - Kristian Wilson, Nintendo 1989

Permalänk
Medlem
Skrivet av SleepstreameR:

Tror https://syncthing.net skulle göra det du efterfrågar

Ang. prestanda så beror det ju på många olika saker, men de gånger jag kört det så har aldrig programmet i sig aldrig varit flaskhalsen

På linux hade jag personligen bara kört rsync, men om du tvunget måste ha ett gui så.

Tack för reply!

Har installerat och labbat med en test build jag satt upp här, dock så behöver jag något annat.
Syncthing verkar smidigt.
Nu när jag testat det så verkar det som att man kan dela massa mappar mellan klienterna DOCK så har man själv endast en mapp som allt sparas i och gör undermappar. Detta fungerar då inte då jag vill dela upp allt på olika hårddiskar.

Övrigt så gillar jag upplägget, ska nog använda det mellan arbetsdatorn <--> servern i dagligt arbete. Men löser inte mitt problem mellan backup-server och filserver.

Visa signatur

// Benz

Permalänk
Medlem

En lösning skulle kunna vara om man hittar ett program som gör:
Kolla igenom och jämför filer mellan dator 1 och 2.
Tar bort filer på dator 2 som inte finns längre på dator 1.
När allt det är klart så överförs filerna som är nya/ändrade på från dator 1 till dator 2.

Visa signatur

// Benz

Permalänk
Medlem

Kolla kommandot rsync. Använd med flaggan --delete för att ta bort överflödiga filer på destination. Jag använder rsync med ssh mellan en Freenas-server och en Synology.
rsync -a --delete -e ssh från till
'till' skriver man in som username@ip:/sökväg

Såg att du skrev med interface nu, men det är bara att skriva in ovanstående i ett kommandofönster.

Permalänk
Medlem

vet att vi kör denna på en av våra maskiner på jobbet: https://backuppc.github.io/backuppc/ har ingen direkt erfarenhet av att använda den själv. Hemma kör jag snapraid (https://www.snapraid.it/). Jag vet inte om någon av dessa lösningar kan passa men kan vara av intresse att undersöka som alternativ.

Visa signatur

| Ryzen 5800x | Asus prime x470 pro | Asus rtx 3080 tuf oc | Gskill 32gb 3,6ghz | aw3225qf |

Permalänk
Medlem
Skrivet av mrsound:

Kolla kommandot rsync. Använd med flaggan --delete för att ta bort överflödiga filer på destination. Jag använder rsync med ssh mellan en Freenas-server och en Synology.
rsync -a --delete -e ssh från till
'till' skriver man in som username@ip:/sökväg

Såg att du skrev med interface nu, men det är bara att skriva in ovanstående i ett kommandofönster.

Är ju helt värdelös på kommandon...
Så detta skriver jag på Server 1 som ska överföra till Server 2(backup server)

rsync -a --delete -e ssh /media/driveX username@1.1.1.1:/media/driveY

?

Visa signatur

// Benz

Permalänk
Medlem
Skrivet av Benz0187:

Är ju helt värdelös på kommandon...
Så detta skriver jag på Server 1 som ska överföra till Server 2(backup server)

rsync -a --delete -e ssh /media/driveX username@1.1.1.1:/media/driveY

?

Ja, fast på min Freenas börjar det med /mnt och på Synology /volume1. Använd kommandot ls för att kika i kataloger och cd för att byta katalog.

EDIT: Hmm nu ser jag att jag brukar skriva in ett steg upp i strukturen för server 2:
rsync -a --delete -e ssh /media/driveX username@1.1.1.1:/media

Permalänk
Medlem
Skrivet av mrsound:

Ja, fast på min Freenas börjar det med /mnt och på Synology /volume1. Använd kommandot ls för att kika i kataloger och cd för att byta katalog.

absolut katalogerna har jag koll på.

Vad betyder -a --delete -e ?

Skulle man kunna göra ett kommando-kö?
Så att man kan köa alla 9diskarna?

I windows kan man ju göra en bash fil som executa en rad commandon man skrivit in, antar att detta går också i linux, men hur?

Visa signatur

// Benz

Permalänk
Medlem
Skrivet av Benz0187:

absolut katalogerna har jag koll på.

Vad betyder -a --delete -e ?

Skulle man kunna göra ett kommando-kö?
Så att man kan köa alla 9diskarna?

I windows kan man ju göra en bash fil som executa en rad commandon man skrivit in, antar att detta går också i linux, men hur?

-a = archive
--delete = ta bort överflödiga filer
-e ssh = använda ssh.

Det är lite klurigt att göra det i en kö för man behöver använda lösenord för att komma åt server 2. Jag kör manuellt än så länge.

EDIT: Det borde gå att automatisera det med ett "cron job" och skapa en nyckel/lösenordsfil för att ansluta till server 2 men jag vet inte på rak arm hur man gör. Har inte brytt mig om att automatisera det för jag har backupservern bara igång när jag kopierar och jag har inte så många olika mål att kopiera till.

Permalänk
Medlem
Skrivet av mrsound:

-a = archive
--delete = ta bort överflödiga filer
-e ssh = använda ssh.

Det är lite klurigt att göra det i en kö för man behöver använda lösenord för att komma åt server 2. Jag kör manuellt än så länge.

EDIT: Det borde gå att automatisera det med ett "cron job" och skapa en nyckel/lösenordsfil för att ansluta till server 2 men jag vet inte på rak arm hur man gör.

Jag kör även NFS på båda ifall man kan köra via det eftersom det inte kräver user/pass?

Visa signatur

// Benz

Permalänk
Medlem
Skrivet av Benz0187:

Jag kör även NFS på båda ifall man kan köra via det eftersom det inte kräver user/pass?

Om du kan montera server 2 med hjälp av NFS som en "katalog" i server 1 så är det nog bara att använda rsync utan "-e ssh".

Permalänk
Medlem
Skrivet av mrsound:

Om du kan montera server 2 med hjälp av NFS som en "katalog" i server 1 så är det nog bara att använda rsync utan "-e ssh".

Intressant.
Dock ska det ju lösa mina tidigare problem med att diskarna blir fulla.
Kan man qua att den bara först deletar som filer som saknas, för att sedan kommandot igen för att kopiera?

Visa signatur

// Benz

Permalänk
Medlem
Skrivet av Benz0187:

Intressant.
Dock ska det ju lösa mina tidigare problem med att diskarna blir fulla.
Kan man qua att den bara först deletar som filer som saknas, för att sedan kommandot igen för att kopiera?

Det verkar som att default är att ta bort överflödiga filer först och sedan kopiera när man använder --delete.

Permalänk
Medlem

Testade detta nu:
rsync -a --delete /media/orginalfiler /media/testbackup

Mappen orginalfiler är en mountad NFS, i mappen låg det ca 26gb,
Trodde först den nått va fel, men lät den hålla på. Sedan va allt klart och det fungerar!

Lyckades lägga till detta sedan så man ser lite info medans han jobba:
rsync -a --delete --progress /media/orginalfiler /media/testbackup

Ska testa mer och fylla hårddisken så få vi se vad som händer då.

Visa signatur

// Benz

Permalänk
Medlem
Skrivet av Benz0187:

Testade detta nu:
rsync -a --delete /media/orginalfiler /media/testbackup

Mappen orginalfiler är en mountad NFS, i mappen låg det ca 26gb,
Trodde först den nått va fel, men lät den hålla på. Sedan va allt klart och det fungerar!

Lyckades lägga till detta sedan så man ser lite info medans han jobba:
rsync -a --delete --progress /media/orginalfiler /media/testbackup

Ska testa mer och fylla hårddisken så få vi se vad som händer då.

Så bra att det fungerar!
Jag fick syn på --progress idag också. Ska nog prova det nästa gång.

Permalänk
Medlem

@mrsound:
Tackar!

Hur köar jag upp kommandon?

Visa signatur

// Benz

Permalänk
Proffsmoddare
Skrivet av Benz0187:

Tack för reply!

Har installerat och labbat med en test build jag satt upp här, dock så behöver jag något annat.
Syncthing verkar smidigt.
Nu när jag testat det så verkar det som att man kan dela massa mappar mellan klienterna DOCK så har man själv endast en mapp som allt sparas i och gör undermappar. Detta fungerar då inte då jag vill dela upp allt på olika hårddiskar.

Övrigt så gillar jag upplägget, ska nog använda det mellan arbetsdatorn <--> servern i dagligt arbete. Men löser inte mitt problem mellan backup-server och filserver.

Bra att du verkar få rsync att fungera istället, det är vad jag hade satsat på också

Visa signatur

"Computer games don't affect kids, I mean if PacMan affected us as kids, we'd all be running around in darkened rooms, munching pills and listening to repetitive music." - Kristian Wilson, Nintendo 1989

Permalänk
Medlem
Skrivet av Benz0187:

Testade detta nu:
rsync -a --delete /media/orginalfiler /media/testbackup

Mappen orginalfiler är en mountad NFS, i mappen låg det ca 26gb,
Trodde först den nått va fel, men lät den hålla på. Sedan va allt klart och det fungerar!

Lyckades lägga till detta sedan så man ser lite info medans han jobba:
rsync -a --delete --progress /media/orginalfiler /media/testbackup

Ska testa mer och fylla hårddisken så få vi se vad som händer då.

Tänk på att source och source/ ger olika resultat. / i slutet på destination spelar ingen roll.

Without a slash on the source directory means copy both the source directory, and the contents (recursively if specified) to the destination directory while adding a trailing slash means only copy the contents of the source directory, recursively if specified, to the destination.

rsync --archive --recursive testing test_backup $ tree test_backup test_backup |--testing |-- another | |-- wilma |-- betty |-- fred |-- nested |-- barney $ rsync --archive --recursive testing/ test_backup $ tree test_backup test_backup |-- another | |-- wilma |-- betty |-- fred |-- nested |-- barney

Syncar du 2 folders vill du nog ha source/. Syncar du från en backup mapp till en backup mapp får du en ny backup mapp till den mapp du syncar till om du inte kör / i slutet på source. Värt att notera kanske.
http://qdosmsq.dunbar-it.co.uk/blog/2013/02/rsync-to-slash-or...

Visa signatur

Ryzen 5800x @ 32gb 3200mhz @ 7tb ssd @ 3060ti Fractal r5 @ Arch
i5 4670k @ 24gb 1600mhz @ Fractal r3 @ 12tb ZFS @ Truenas Scale
Thinkpad T450 @ i5 5300u @ 16gb @ 512gb ssd @ 24+48wh batteri @ Debian

Permalänk
Medlem
Skrivet av Benz0187:

@mrsound:
Tackar!

Hur köar jag upp kommandon?

För att köa kommandon direkt på en kommandorad så kan du köra tre kommandon efter varandra såhär:

echo wait 3 sec; sleep 3; echo I waited 3 sec

Bättre alternativ iom att du ska köra detta fler gånger är att skapa en scriptfil med valfri editor, tex:

nano backup.sh

Med innehåll

#!/bin/bash echo wait 3 sec sleep 3 echo I waited 3 sec

Gör scriptfilen exekverbar

chmod +x backup.sh

Sen exekverar du scriptet med:

# Om du står i samma mapp: ./backup # Alternativt skriv hela sökväg till scriptet: /full/path/to/backup.sh

Tips på hur du hittar mer information om kommandot du vill köra och vilka flaggor kommandot tar:

rsync --help man rsync

Permalänk
Medlem
Skrivet av Benz0187:

Intressant.
Dock ska det ju lösa mina tidigare problem med att diskarna blir fulla.
Kan man qua att den bara först deletar som filer som saknas, för att sedan kommandot igen för att kopiera?

Manualen för rsync är lång och har många växlar som inte alltid är lätta att bena ut vad de faktiskt gör - bl.a kan man bestämma ordningen hur den nya/uppdaterade filens skrivs - dvs. före eller efter att den nya filen är överförd. - det finns också '--inplace' där man modifierar och byter ut sektorer på en redan befintlig fil - tex uppdatera många hundra GB stor databasfil som annars är jobbig att överföra på nytt var gång och kanske ont om diskplats.

dock --inplace rekommenderas bara om man gör snaphot på sin backup mellan backupomgångarna som i BTRFS eller ZFS.

har man tex hårda länkar så kan det bli rätt sörjigt om sagda fil modifiera från flera olika håll mha... --inplace...

radering av borttagna filer brukar göras först innan det går igenom filträden för att synka upp nya och/eller ändrade filer

Jag bruka köra flagga '-i -i' i kommandot för att se vad som händer och vill man prova med en torrkörning först utan att det gör några åtgärder på disken utan bara simulerar dem så kan man använda sig av '--dry-run' - och det rekommenderas - det hinner raderas väldigt många filer väldigt fort om man råkade missa en '/' sist i en sökväg - därför uppskattas BTRFS (och ZFS) väldigt mycket på sin backuplagring att man också kan göra en snapshot (eller att server/NAS gör snapshot själv på daglig basis, vilket de flesta nyare köpeNAS gör numera) _innan_ man trycker 'enter' för sin ny-snickrade rsync-kommandosekvens...

Skall man jämföra filer på 'binär' nivå (förvisso med hashvärden) så kan man använda flaggan '-c' - men då kommer det ta tid och dessa görs företrädesvis att lagrings-servern har en rsync snurrande lokalt på daemon-nivå (kör man via SSH så startar en sådan automagiskt) så kommer rsync att göras på lagringsservern och räkna igenom sina filer och en rsync på klientdatorn som räknar igenom sina och sedan kommer de att hela tiden skicka checksummor mot varandra på ett smart sätt utan att skicka data mellan sig, men även med detta så måste alla filerna på båda sidorna läsas igenom och är det 50 TB så kommer det ta tid.

Kör man via NFS så kommer det inte köras lokalt utan all data måste köras över nätverket till klienten för jämförelse/beräkning.

kort sagt blir det att läsa manualen för rsync och leta efter olika användarexempel.

Det finns väldigt kraftfulla kommandon som tex. att jämföra 2 olika direktorys och allt som är lika som referensen tas bort på den första och det som skiljer hamnar på en '3:e directory

dock läs noga och prova noga att det fungerar som det skall innan det körs på skarp data - det är lätt att bli blodig om man viftar runt med denna väldigt användbara svärd lite obetänksamt.

- om man inte kör med -c så kan det tex. missa filer där innehållet i filkroppen ändrats men inte filens tidsstämplar som tex. veracrypt-kontainer där man avsiktligt inte ändrar några metadata för filen som indikerar att man har varit inne och rotat i filen, men '-c' är dataflödes och tidsmässigt kostsamt och är inget man vill köra på alla filer i en rutinbackup. Har man sådana kända filer (som veracrypt-kontainrar) så får man göra en rsync-backup specifik för dem med '-c' flaggan.

---

Det finns ytterligare program att kika på när man skall jämföra olika filträn - 'rmlint' - den skapar script som man senare kör och man kan bestämma vad som skall hända med filerna som är lika och hanterar också att jämföra mot master-direktorys som inte får röras i den senare filborttagningen eller deduplikationen gentemot direktorys man vill tömma eller deduplikera filer.

Rmlint bryr sig inte om vare sig filnamn, tidsstämpla eller plats i hierarkin när den jaga dubbletter - medans rsync bygger allt på att sidorna ser lika ut eller gör dom lika och tex upptäcker inte en flyttad fil utan det blir en fil som raderas på ett ställe och skapas igen på annan ställe - vilket det delar med väldig många olika backupprogram och ej har insikt om filer är 'bara' flyttade.

'rmlint' stöder också att för varje fil så sparas hashvärde och tidsstämpel som attribut och skall man tex. tömma snapshot (liggande på subvolymer) i BTRFS så kan jag säga - det spar tid!! - typ från en 24-timmars skörning på en full 8TB disk till 12 minuter...

Dock skall också sägas att man bör köra master och en snapshot av master minst en gång för att få sina hashvärden, då varje ny snapshot som görs av mastern så kommer dessa hashvärden att följa med även i snapshoten - nya filer har ingen hash-värde och ändrade filer så stämmer inte hashvärde mot tidstämpel och filens aktuella datum och då anses som ogiltig hash och filen hashas om.

'rmlint' kan hantera mot BTRFS-filsystem så att den tex. klonar lika data som finns på flera filer även med olika namn (dock inte partiell kloning) medans ZFS saknar i dessa sammanhang en förbaskad viktig funktion som heter '--reflink' (som 'cp --reflink=always fil1 fil2') för att göra oberoende kopia utan att kopiera ny uppsättning datat mellan olika filträn och olika snapshot tvärs över gränser då ZFS snapshot och kloner har hierarki och turordning hur de skapas medans BTFS har inte det.

för filsystem som inte har '--reflink' så finns även hårda länkar (för filer på samma fysiska disk/LVM) och slutligen mjuka länkar för deduplication över olika fysiska diskar/LVM.

Permalänk
Medlem
Skrivet av Letrix:

För att köa kommandon direkt på en kommandorad så kan du köra tre kommandon efter varandra såhär:

echo wait 3 sec; sleep 3; echo I waited 3 sec

Bättre alternativ iom att du ska köra detta fler gånger är att skapa en scriptfil med valfri editor, tex:

nano backup.sh

Med innehåll

#!/bin/bash echo wait 3 sec sleep 3 echo I waited 3 sec

Gör scriptfilen exekverbar

chmod +x backup.sh

Sen exekverar du scriptet med:

# Om du står i samma mapp: ./backup # Alternativt skriv hela sökväg till scriptet: /full/path/to/backup.sh

Tips på hur du hittar mer information om kommandot du vill köra och vilka flaggor kommandot tar:

rsync --help man rsync

hmm, förstår inte riktigt.

#!/bin/bash
echo wait 3 sec
sleep 3
echo I waited 3 sec

Vart lägger jag in kommandot? Byter jag echo?

och sedan wait 3sec? varför just 3sec? eller ska jag ta längre tid här?

Visa signatur

// Benz

Permalänk
Medlem

Det är ett exempel på hur du skriver ett skript för köade anrop.
Lägg det i en textfil som du förslagsvis sparar med suffixet .sh.
Spara filen.
kör kommandot

source ./filnamn.sh

Sen kan du köra ditt skript genom att skriva

filnamn.sh

i terminalen.

Då ska du få utskriften

wait 3 sec I waited 3 sec

Permalänk
Medlem
Skrivet av Benz0187:

hmm, förstår inte riktigt.

#!/bin/bash
echo wait 3 sec
sleep 3
echo I waited 3 sec

Vart lägger jag in kommandot? Byter jag echo?

och sedan wait 3sec? varför just 3sec? eller ska jag ta längre tid här?

#!/bin/bash kopiera hårddisk 1 kopiera hårddisk 2 och så vidare.

Skulle kunna lägga in lite kommentarer också som visas i terminalfönstret:

#!/bin/bash echo Kopierar hårddisk 1.. kopiera hårddisk 1 (skriv in din kod för rsync av hårddisk 1 här) echo Kopierar hårddisk 2.. kopiera hårddisk 2 (skriv in din kod för rsync av hårddisk 2 här) och så vidare.

Permalänk
Medlem
Skrivet av mrsound:

#!/bin/bash kopiera hårddisk 1 kopiera hårddisk 2 och så vidare.

Skulle kunna lägga in lite kommentarer också som visas i terminalfönstret:

#!/bin/bash echo Kopierar hårddisk 1.. kopiera hårddisk 1 (skriv in din kod för rsync av hårddisk 1 här) echo Kopierar hårddisk 2.. kopiera hårddisk 2 (skriv in din kod för rsync av hårddisk 2 här) och så vidare.

Tack som fan alla!
Har nu fått hjälp med allt + lite till. Ni är guld värda!

Visa signatur

// Benz

Permalänk
Medlem

Märte att jag behövde lägga till

--ignore-errors delete even if there are I/O errors

för att några filer skulle tas bort över huvud taget med --delete när det blev io-fel.

Vill man ha lite mer information i terminalfönstret så kan man lägga till ett 'v' efter '-a'.

-av

Permalänk
Medlem

@mrsound: Skulle nog ta och kolla hälsan på de där diskarna, I/O errors är ju aldrig kul.

"Who's general error and why is he reading my hard drive?!"

Permalänk
Medlem
Skrivet av Northbane:

@mrsound: Skulle nog ta och kolla hälsan på de där diskarna, I/O errors är ju aldrig kul.

"Who's general error and why is he reading my hard drive?!"

Det var inget att oroa sig för. Klagar bara på att jag inte kan ta bort några av Synology's interna filer (@eadir) pga. filrättigheter.

Permalänk
Medlem
Skrivet av mrsound:

Det var inget att oroa sig för. Klagar bara på att jag inte kan ta bort några av Synology's interna filer (@eadir) pga. filrättigheter.

Ah, gött

Permalänk
Medlem

Provade precis att använda NFS istället för SSH mellan FreeNAS och Synology med Rsync och nu maxar det gigabit-nätverket.
Förut blev det bara runt 30MB/s men nu ligger det runt 100MB/s.

Busenkelt var det dessutom.
Behövde bara:
Slå på NFS i Synologyn och lägga till IP till FreeNAS-servern bland rättigheter.
Använda mount -t nfs i FreeNAS.