Kopiering mellan datorer i shell

Tråden skapades och har fått 17 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • International user
  • 2003-10-25 18:24

Vet någon om det i shell går att kopiera filer mellan datorer med bibehållen resursdel?

rcp och scp hanterar ju inte detta. CpMac kopierar inte mellan datorer. GUI-lösningar i detta ämne undanbedes

ditto kanske?

  • Medlem
  • International user
  • 2003-10-26 12:06
Citat:

Skrevs ursprungligen av thevil
ditto kanske?

Tyvärr kopierar inte ditto "host to host". Men den bevarar iof resursdelen med option -rsrcFork.

  • Medlem
  • International user
  • 2003-10-26 14:10

I väntan på att det kommer någon demon som kopierar "host to host" med bibehållen resursdel blir det en liten "workaround" med hjälp av tar och scp:

Via ssh loggar jag in på min dator på jobbet:
ssh -l wire 172.10.10.56

ställer mig i önskad mapp:
cd /Users/wire/vill_ha_hem_mapp

Packar ihop hela skiten med tar:
tar -cf vill_ha_hem_mapp.tar *

Loggar ut från jobbdatorn:
exit

ställer mig i den mapp jag vill att filen ska landa:
cd; cd min_mapp

tar hem tar-filen från jobbet:
scp wire@172.10.10.56:vill_ha_hem_mapp/vill_ha_hem_mapp.tar .

Hemma. Med resursdelar och allt. Generellt kan detta lilla tips användas till mycket. T.ex. automatisk backup av alla hemkataloger på en server...

  • Oregistrerad
  • 2003-10-26 23:57
Citat:

Skrevs ursprungligen av Wire
I väntan på att det kommer någon demon som kopierar "host to host" med bibehållen resursdel blir det en liten "workaround" med hjälp av tar och scp:

Förlåt en Mac-newbie: Är "resursdel" något Apple-specifikt (och alltså inte de gängse Unix-egenskaperna som user, group, permissions...)? Med reservation för detta - rsync över ssh torde vara en smidigare lösning än tar och scp.

Edit: Lade till ett exempel:

rsync -avz -e ssh <källa> <mål>

Arkivflaggan (a) ger rekursion och bevarande av ägare etc.

Senast redigerat 2003-10-27 00:26
  • Medlem
  • International user
  • 2003-10-27 10:04
Citat:

Skrevs ursprungligen av LFH
Förlåt en Mac-newbie: Är "resursdel" något Apple-specifikt

Här har du info om resurs-och datadel i Macfiler.

Detta exempel visar skillnaden vid kopiering med CpMac (bibehållen resursdel) och cp/scp/rsync:

Jämför resultatet med:
cd ; mkdir detta_test ; cd detta_test ; rsync -a /Applications/Chess.app/ .

och:
/Developer/Tools/CpMac -r /Applications/Chess.app .

Detta visar tydligt "problemet" Macens resursdel vid kopiering.

  • Oregistrerad
  • 2003-10-27 23:00
Citat:

Tack för länken och det belysande exemplet! OS X är en charmig men tydligen också egensinnig *nix...

thevil var faktiskt lösningen på spåret. Tack och lov stödjer ditto stdin & stdout, varför vi kan sätta upp en "one-liner":

ditto -c --rsrc /Applications/Chess.app - | ssh <user>@<remotehost> ditto -x --rsrc - /Users/<user>/Chess.app

Chess går fint att spela efter kopiering.

Senast redigerat 2003-10-27 23:14

Förlåt mig om jag är en party-pooper, men jag tror inte att Chess.app har en resursdel...

Därmed inte sagt att LFH's one-liner inte är elegant

  • Medlem
  • International user
  • 2003-10-28 18:54
Citat:

Skrevs ursprungligen av LFH
...en "one-liner":

ditto -c --rsrc /Applications/Chess.app - | ssh <user>@<remotehost> ditto -x --rsrc - /Users/<user>/Chess.app

Intressant! Jag är inte riktigt med på hur denna pipe fungerar. Förklara gärna. Options -c, -x, --rsrc finns inte med på man-sidan för ditto (10.2.8). Var har du hittat denna dokumentation?

  • Medlem
  • Svedala
  • 2004-09-27 22:25
Ursprungligen av Wire:

Intressant! Jag är inte riktigt med på hur denna pipe fungerar. Förklara gärna. Options -c, -x, --rsrc finns inte med på man-sidan för ditto (10.2.8). Var har du hittat denna dokumentation?

ditto -c --rsrc /Applications/Chess.app - | ssh <user>@<remotehost> ditto -x --rsrc - /Users/<user>/Chess.app

Jag antar att magin ligger i de två understrukna bindesstrecken - har jag fattat det rätt så kommer det första att ge en stdout, sedan pajpar man den över ssh till ditto på den andra maskinen, där den läses in som en stdin.
Har jag hajjat saken rätt?

Va? Hos mig får man upp:
NAME
ditto - copy files and directories to a destination directory

SYNOPSIS
ditto [-v] [-V] [-X] [--arch arch] [--bom bom] [--rsrc] src ...
dst_directory
ditto [-v] [-V] [--arch arch] [--rsrc] src_file dst_file
ditto -c [-z] [-k] [-v] [-V] [-X] [--keepParent] src dst_archive
ditto -x [-z] [-k] [-v] [-V] src_archive ... dst_directory

Osv..

  • Medlem
  • International user
  • 2003-10-28 20:02
Citat:

Skrevs ursprungligen av thevil
Va? Hos mig får man upp:
NAME
ditto - copy files and directories to a destination directory

SYNOPSIS
ditto [-v] [-V] [-X] [--arch arch] [--bom bom] [--rsrc] src ...
dst_directory
ditto [-v] [-V] [--arch arch] [--rsrc] src_file dst_file
ditto -c [-z] [-k] [-v] [-V] [-X] [--keepParent] src dst_archive
ditto -x [-z] [-k] [-v] [-V] src_archive ... dst_directory

Osv..

Vad är nu detta för trauma. Se min manfil för ditto (bifogad). Läs den med cat, annars kan den visas felaktigt.

  • Medlem
  • International user
  • 2003-10-28 20:18

Hittade man-sidan för ditto hos Apple. Men den stämmer inte med den jag får fram i min dator (10.2.8). Se föregående inlägg. Suck...

  • Oregistrerad
  • 2003-10-28 22:33
Citat:

Skrevs ursprungligen av Wire
Intressant! Jag är inte riktigt med på hur denna pipe fungerar. Förklara gärna. Options -c, -x, --rsrc finns inte med på man-sidan för ditto (10.2.8). Var har du hittat denna dokumentation?

Jag förstår att det blir tämligen obegripligt med den skruttiga man-sidan du har att tillgå! Växlarna är som följer (enligt manualen i Panther med BSD och alla utvecklarverktyg installerade):

-c create an archive at the destination path
-x the first source is an archive to extract
- read (write) archive data from (to) stdin (stdout)
-rsrc Preserve resource forks and HFS meta-data (samma som -rsrcFork)

Vet man sedan att ssh glatt läser stdin och exekverar kommandon blir det ganska enkelt. Faktiskt finns pipen som ett exempel i dittos man-sida!

Enklare exempel (just in case):

<user>@<host1>:~> cat infile.txt
rad 1
rad 2
rad 3
<user>@<host1>:~> cat infile.txt | ssh <host2> "grep 2 > outfile.txt"
<user>@<host2>'s password: ********

Vi kollar resultatet:
<user>@<host1>:~> ssh <host2>
<user>@<host2>'s password: ********
Last login: Tue Oct 28 21:48:35 2003 from <host1>
Welcome to Darwin!
<user>@<host2>:~> cat outfile.txt
rad 2

Un*x är så coolt!

  • Oregistrerad
  • 2003-10-28 22:52
Citat:

Skrevs ursprungligen av Wire
Hittade man-sidan för ditto hos Apple. Men den stämmer inte med den jag får fram i min dator (10.2.8). Se föregående inlägg. Suck...

Och nu läste jag ditt senaste inlägg... Nå, alltid blir väl någon glad åt min utläggning.

  • Medlem
  • 2003-11-18 02:23
Citat:

Skrevs ursprungligen av LFH
Un*x är så coolt!

Visst är det

  • Medlem
  • Varberg
  • 2004-09-24 10:47

Väcker lite liv i denna tråd med med en stilla undran:
Vilken typ av filer mår inte bra att kopieras med scp? Har i min enfald nyttjat scp rätt friskt utan att inse att den inte kopierar resource forken. Sitter med en bunt jpg-filer som inte kan öppnas nu. Beror det på scp?

  • Medlem
  • Svedala
  • 2004-09-27 22:27
Ursprungligen av skamuel:

Väcker lite liv i denna tråd med med en stilla undran:
Vilken typ av filer mår inte bra att kopieras med scp? Har i min enfald nyttjat scp rätt friskt utan att inse att den inte kopierar resource forken. Sitter med en bunt jpg-filer som inte kan öppnas nu. Beror det på scp?

Just på JPG-bilder borde det inte bidra till något värre än att systemet inte vet vilket program filerna är associerade till, så om filerna har gått sönder låter det lite konstigt...
Program i okomprimerad form sabbas helt om resource forken försvinner. (Iallafall i gamla Mac OS, antar att det är samma i OSX)

1
Bevaka tråden