Sida 1 av 1

rsync: rmdir - varför?

Postat: 06 jun 2008, 23:03
av Johnny Rosenberg
sudo rsync -av /usr /media/Backup/PB
/media/Backup är min USB-hårddisk.

Felmeddelande:

Kod: Markera allt

rsync: delete_file: rmdir "/media/Backup/PB/usr/share/doc/bash/completion-contrib" failed: Directory not empty (39)
rsync error: some files could not be transferred (code 23) at main.c(977) [sender=2.6.9]
Exakt var sa jag till rsync att den över huvud taget skulle fundera på att radera något? Och varför vill den i så fall bara radera just /media/Backup/PB/usr/share/doc/bash/completion-contrib?

Re: rsync: rmdir - varför?

Postat: 07 jun 2008, 00:36
av fedor
varför använda /usr/ ?

Re: rsync: rmdir - varför?

Postat: 07 jun 2008, 10:16
av Johnny Rosenberg
fedor skrev:varför använda /usr/ ?
Hm… får man inte det?

Annars finns det väl ingen särskild anledning. Tar backup på det mesta med rsync (använde cp förut men blev idiotförklarad så jag bytte) och har ett antal korta skript för respektive typ av backup. Har sedan ett ”total-skript” som kör de andra skripten, exempelvis det skript jag gav ett kort utdrag ur i förra inlägget. Oftast gör jag bara backup på mina egna filer (/home/guraknugen/Eget med alla dess undermappar) och då kör jag Backup-Eget-skriptet direkt via en startare, men då och då kör jag backup på ”det mesta”, där /usr ingår som en liten del. Detta tar ju mycket längre tid, särskilt när man inte gjort det på ett tag, därav att jag delat upp det i flera mindre skript så att jag inte behöver köra rubbet varje gång. Känns mycket bekvämare för mig än att använda ett särskilt backup-program med GUI. Allt jag behöver göra är att se till att min USB-HDD är inkopplad och sedan dubbelklicka på två ikoner (en mapp på skrivbordet och därefter på en av de olika ikoner jag lagt där för olika typer av backuper).

Nåja, inte har det väl någon betydelse för frågan i alla fall vad jag kopierar? Vad jag undrade var ju varför jag fick det felmeddelande jag fick. Varför vill rsync göra en rmdir på en mapp som jag spontant tycker borde finnas kvar? Det finns då inget rmdir i mitt skript i alla fall, det kan jag garantera (om inte någon av flaggorna inkluderar detta, men jag kan inte se att det framgår av man rsync).

Så om nu någon tycker att det är totalt meningslöst att göra backup på /usr så säg gärna det, men jag vill ÄNDÅ veta svaret på min fråga. Man vill ju lära sig så mycket som möjligt. Ska försöka forska kring det hela lite på egen hand också.

Re: rsync: rmdir - varför?

Postat: 07 jun 2008, 10:51
av Johnny Rosenberg
Tror jag hittade svaret. Jag tror mig ha löst det genom att lägga till --force. Provade och det verkade fungera i alla fall.

Så nu undrar jag om jag fattat det hela rätt:
När man kopierar filer med cp så kopieras filerna bara rätt och slätt, så om någon fil finns i mappen med säkerhetskopiorna men inte i originalmappen så kommer den inte raderas. Men om man använder rsync så kommer mappen med säkerhetskopiorna att bli identisk med originalmappen? Alltså, om någon fil tagits bort ur originalmappen, kommer den också att tas bort från mappen med säkerhetskopiorna?

Eller har någon en bättre förklaring på hur det ligger till?

Re: rsync: rmdir - varför?

Postat: 07 jun 2008, 12:14
av Konservburk
Johnny Rosenberg skrev:Tror jag hittade svaret. Jag tror mig ha löst det genom att lägga till --force. Provade och det verkade fungera i alla fall.
Det funkar, ja.
Johnny Rosenberg skrev:Så nu undrar jag om jag fattat det hela rätt:
...om man använder rsync så kommer mappen med säkerhetskopiorna att bli identisk med originalmappen? Alltså, om någon fil tagits bort ur originalmappen, kommer den också att tas bort från mappen med säkerhetskopiorna?
Nej, inte i vanliga fall. Du måste ange flaggan --delete (eller motsvarande) för att rsync ska ta bort filer från backup-katalogen när de inte finns kvar i orginal-katalogen. I annat fall tas inga filer bort. Däremot skrivs ändrade filer över.
Johnny Rosenberg skrev:Eller har någon en bättre förklaring på hur det ligger till?
Det som hände dig är att det fanns en katalog i backupen som istället har blivit ersatt av en symlänk i orginalet. Katalogen i backupen måste då ersättas av en symlänk, varför rsync helt enkelt försöker ta bort katalogen och skapa en symlänk istället. Problemet uppstår när det finns filer i katalogen eftersom den då inte går att ta bort. När du anger flaggan --force så talar du om för rsync att den får ta bort kataloger med rm -rf istället för med rmdir. Du skulle kunna använda --delete istället för --force eftersom katalogen då kommer att tas bort (den finns ju inte kvar i orginalet) innan den ens försöker skapa symlänken.

Re: rsync: rmdir - varför?

Postat: 07 jun 2008, 18:46
av Johnny Rosenberg
Konservburk skrev:Problemet uppstår när det finns filer i katalogen eftersom den då inte går att ta bort. När du anger flaggan --force så talar du om för rsync att den får ta bort kataloger med rm -rf istället för med rmdir. Du skulle kunna använda --delete istället för --force eftersom katalogen då kommer att tas bort (den finns ju inte kvar i orginalet) innan den ens försöker skapa symlänken.
Det kanske inte hör hit, men nog tycker jag att det borde finnas en flagga för rmdir som gör det möjligt att ta bort mappar som innehåller filer, för varför skulle en mapp vara tom? Det är ju ingen mening med att ha en tom mapp, så jag kan ju tänka mig att minst 99% av alla mappar man har innehåller något. I så fall är ju rmdir tämligen meningslöst, eller i alla fall väldigt beroende av andra kommandon, som tömmer mapparna innan man tar bort dem.

Fast egentligen verkar ju rmdir helt onödigt. Varför inte bara rm? Det borde ju inte spela någon roll om det man raderar är en fil eller en mapp; skiten ska ju ändå bara bort…

Re: rsync: rmdir - varför?

Postat: 08 jun 2008, 08:33
av Saunafreak
Jag gör en säkerhetskopia på min home
rsync -r -t -v --progress --delete /home/namn/ /media/disk/
Då har jag en kopia av min dator på en USB-hårddisk.

Mandriva 2008.1

Re: rsync: rmdir - varför?

Postat: 08 jun 2008, 11:31
av Johnny Rosenberg
Saunafreak skrev:Jag gör en säkerhetskopia på min home
rsync -r -t -v --progress --delete /home/namn/ /media/disk/
Då har jag en kopia av min dator på en USB-hårddisk.

Mandriva 2008.1
Då mina egna filer ska vara desamma för två olika datorer, så vill jag inte ha med inställnigsfilerna eftersom inte exakt samma saker är installerade i de båda datorerna. Något fungerande nätverk har jag inte heller för närvarande. Har en router, men har inte kopplat in den än.