rsync doet niets, directories zijn echt verschillend

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 05-09 14:39

_Thanatos_

Ja, en kaal

Topicstarter
Ik probeer te rsyncen over ssh van Windows met cygwin naar Ubuntu. De permissions staan goed, de files zijn aan beide kanten gewoon toegankelijk, alles zou goed moeten zijn dus. Maar ergens kan iets iets niet zien/vinden, maar ik kan er niet achter komen wat er nou precies fout gaat.

Dit is het commando dat ik gebruik:
code:
1
rsync -rltgoDv -e ssh swadmin@192.168.1.53:/var/www/website .

Dan vraagt ie om het password, dat typ ik in, en dan:
code:
1
2
3
4
receiving incremental file list

sent 12 bytes  received 70 bytes  23.43 bytes/sec
total size is 0  speedup is 0.00

En voor de liefhebbers, de output met -vvv erbij:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
receiving incremental file list
server_sender starting pid=7613
[sender] make_file(website,*,0)
recv_file_name(website)
received 1 names
recv_file_list done
send_file_list done
received 0 names
recv_file_list done
get_local_name count=1 .
generator starting pid=3872
delta-transmission enabled
recv_generator(website,1)
recv_files(1) starting
got ACL-based default perms 570 for directory .
recv_generator(website,2)
send_files starting
generate_files phase=1
send_files(2, /var/www/website)
recv_files(website)
send_files phase=1
recv_files phase=1
generate_files phase=2
send_files phase=2
recv_files phase=2
send files finished
total: matches=0  hash_hits=0  false_alarms=0 data=0
recv_files finished
generate_files phase=3
generate_files finished

sent 15 bytes  received 368 bytes  58.92 bytes/sec
total size is 0  speedup is 0.00
[generator] _exit_cleanup(code=0, file=/usr/src/ports/rsync/rsync-3.0.9-1/src/rsync-3.0.9/main.c, line=1518): about to call exit(0)


Daar klopt geen zak van. Er zijn tientallen files in de current directory die niet op de target staan.

Ik heb het al geprobeerd met --force en met --delete, maar die helpen uiteraard niet. Ik hb ook ipv de . een absoluut pad geprobeerd, maar ook dat maakt niet uit.

De hamvraag is dus: hoe krijg ik rsync zover dat ie "gewoon" uploadt wat er in de current directory staat?

[ Voor 35% gewijzigd door _Thanatos_ op 19-03-2014 14:00 ]

日本!🎌


Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 21:30

Hero of Time

Moderator LNX

There is only one Legend

Waar zijn de bestanden anders? Op de machine vanwaar je het draait? Want je vraagt nu om een sync van de Linux machine naar je Windows bak. Als op Windows meer bestanden staan, worden die niet naar de Linux machine gestuurd. Daarvoor moet je de paden omdraaien.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • Sendy
  • Registratie: September 2001
  • Niet online
_Thanatos_ schreef op woensdag 19 maart 2014 @ 13:56:
De hamvraag is dus: hoe krijg ik rsync zover dat ie "gewoon" uploadt wat er in de current directory staat?
Als eerste: dit is niet wat je commando zegt. Het commando zou de directory "website" en alles dat daaronder ligt moeten kopieren naar de huidige directory.

Misschien kijk je naar de verkeerde directories?

-edit
Waarschijnlijker dat de paden gewoon verwisseld zijn idd

[ Voor 7% gewijzigd door Sendy op 19-03-2014 14:16 ]


Acties:
  • 0 Henk 'm!

  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 05-09 14:39

_Thanatos_

Ja, en kaal

Topicstarter
Dat was het inderdaad... De naam van het commando "rsync" doet wel heel erg sterk vermoeden dat het gaat om syncen, ipv uploaden OF downloaden. Maar dat laatste is kennelijk wat het is. Wel een beetje suf hoor, het is dus eigenlijk een soort heel erg fancy remote xcopy (xcopy is een windows term - dat is gewoon een recursive copy met wat handige batch-achtige features).

Uiteindelijk (voor de liefhebbers) op dit commando uitgekomen:
code:
1
rsync -rltgoDv -e "ssh -i /cygdrive/N/Documents/private_key" --chmod=Du=rwx,Dg=rwx,Do=rx,Fu=rw,Fg=rw,Fo=r --delete --delete-excluded --force --exclude-from=".rsyncexclude" ./ swadmin@192.168.1.53:/var/www/website/

Daarmee doet ie precies wat ik wil, een exacte kopie maken van m'n lokale dir naar de server, exclusief dingen die de server niet nodig heeft, en dingen verwijderen die niet meer hoeven, lege dirs meenemen just in case.

Die chmod is om de eoa reden ook nodig, omdat anders de permissions weg zijn voor alle geuploadde files. Waarom dat dan weer zo is, dat weet alleen een god, want simpelweg de permissions van de parent dir overpakken dat zou natuurlijk veel te logisch zijn.

Wat je allemaal niet leert als je windows en linux gebruikt :P

[ Voor 4% gewijzigd door _Thanatos_ op 19-03-2014 14:39 ]

日本!🎌


Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 21:30

Hero of Time

Moderator LNX

There is only one Legend

Met rsync doe je idd een soort kopie actie, maar wel een die een slim algoritme gebruikt. Alleen wijzigingen worden doorgevoerd van bron naar bestemming. Ik hoopte in eerste instantie ook op een two-way sync, waarbij je eerste map de master is zodat nieuwe bestanden daarvan naar de andere kant gestuurd worden, en missende bestanden ook worden verwijdert. Dat is de ideale oplossing, maar helaas, rsync is niet de tool daarvoor.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • CAPSLOCK2000
  • Registratie: Februari 2003
  • Laatst online: 01-10 12:22

CAPSLOCK2000

zie teletekst pagina 888

Als je twee kanten op wil syncen is unison je vriend.

This post is warranted for the full amount you paid me for it.


Acties:
  • 0 Henk 'm!

  • FitzJac
  • Registratie: November 2010
  • Laatst online: 06:29
_Thanatos_ schreef op woensdag 19 maart 2014 @ 14:37:

Die chmod is om de eoa reden ook nodig, omdat anders de permissions weg zijn voor alle geuploadde files. Waarom dat dan weer zo is, dat weet alleen een god, want simpelweg de permissions van de parent dir overpakken dat zou natuurlijk veel te logisch zijn.
De -p flag erbij gebruiken:
code:
1
-p, --perms                 preserve permissions

Persoonlijk doe ik -a:
code:
1
-a, --archive               archive mode; equals -rlptgoD (no -H,-A,-X)

Acties:
  • 0 Henk 'm!

  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 05-09 14:39

_Thanatos_

Ja, en kaal

Topicstarter
Ja, die -p laat ik er juist uit, omdat die óók ervoor zorgt dat alles "geen" permissions krijgt. NULL weet waarom, maar het is zo. Ik als gebruiker heb full control op de files, de groep waar ik in zit ook, en de "rest van de wereld", dus de niet-groep waar ik niet in zit, heeft read-en-browse rechten. Je zou dus rwxrwxr-x op directories en rw-rw-r-- op files verwachten. Maar nee, leeg. Daarom is die harige chmod-optie nodig.

"-a --no-p" werkt trouwens ook, maar ik ben liever expliciet.
Ik kon trouwens niet vinden wat die -X doet, en waarom er zo expliciet bij vermeld wordt dat die uitgezet word. Dus dat voelde ook een beetje als verkapte magie. Doe ik liever niet.

[ Voor 22% gewijzigd door _Thanatos_ op 20-03-2014 01:21 ]

日本!🎌


Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 21:30

Hero of Time

Moderator LNX

There is only one Legend

-X, --xattrs preserve extended attributes
Dat dus.

Voor de reden dat je die extra opties moet gebruiken en anders geen rechten krijgt heeft mogelijk te maken met cygwin. Unison is een aardig idee om beide kanten tegelijk op te kunnen werken. Iets wat ik nog eens ga implementeren thuis.

Commandline FTW | Tweakt met mate

Pagina: 1