Filöverföring med resume i terminalen?

Tråden skapades och har fått 15 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • International user
  • 2004-04-17 19:38

Jag använder scp (securecopy) en hel del för att föra över filer mha terminalen mellan olika burkar. Men det är lite mekkigt när internet går ner vilket det gör ganska ofta härnere att behöva starta om filöverföringen från början.

Finns det ngt kommando/verktyg i terminalen som fixar resume vid kopiering? Jag vill inte behöva installera en ftp-server eller liknande.

//mattan

curl

Kolla manualsidan eller http://curl.haxx.se/

//Mikael

  • Medlem
  • International user
  • 2004-04-18 16:00

Tack Mikael, jag kollade in manpagen och det verkar som att resume (append) valet i curl bara gäller när man kör ftp som protokoll. Jag har ingen ftp-server igång på burkarna. Eller ha jag hajjat fel?

Ursprungligen av mattan:

Jag har ingen ftp-server igång på burkarna. Eller ha jag hajjat fel?

Jag har åtskilliga gånger letat efter resume i scp, men har aldrig hittat det. Det skulle kunna gå att göra på andra sätt typ ssh och dd men det är verkligen överkurs.

Edit: Jag var ju bara tvungen att prova det, men det är verkligen överkurs, och inte användarvänligt, men om du nu bor i Jakarta så kanske det kan vara intressant.

e.g. överför filen exempel.tiff, men misslyckas.

# scp example.com:exempel.tiff .
>> ERROR
# ls -lk exempel.tiff
-rw-r--r--    1 erik     erik           31013 Apr 20 10:34 resume

# dd if=<(ssh example.com  dd if=exempel.tiff  bs=1k skip=31013) bs=1k seek=31010 of=exempel.tiff
>> KLAR
Senast redigerat 2004-04-20 11:15
  • Medlem
  • Uppsala
  • 2004-04-20 10:56

annars skulle jag nog rekommendera att köra med rsync istället..
den kan använda sig av ssh protokollet och stöder resume både vid upp & nedladdning.
följande parametrar till rsync fungerar klockrent för mig:
rsync -ruavz -e ssh <från> <till>
-r kanske man ska stryka den går rekursivt inte alltid önskvärt, ovan är ett backupscript jag har som går från min laptop till en server..
man rsync är ju annars en bra källa för information.

Ursprungligen av nubbe:

annars skulle jag nog rekommendera att köra med rsync istället..

Tyst! Låt mig nörda mig.. Men det stämmer rsync är verkligen att föredra, rsync --stats -e ssh example.com:exmepel.tiff exempel.tiff gör samma sak som det jag skrev ovan, fast mycket bättre.

Ursprungligen av mattan:

Tack Mikael, jag kollade in manpagen och det verkar som att resume (append) valet i curl bara gäller när man kör ftp som protokoll. Jag har ingen ftp-server igång på burkarna. Eller ha jag hajjat fel?

Det kan tänkas att curl klarar SFTP (Secure FTP) och det är vad SSH använder.

Ciryon

  • Medlem
  • International user
  • 2004-04-20 13:23

Tack! Skall testa rsync genast! Verkar som att det passar utmärkt.

  • Medlem
  • International user
  • 2004-04-20 19:22

Funkar kanon med rsync men man får ha med -C --partial så att delvis nedladdade filer sparas så att det finns ngn fil att resuma nedladdningen på. Körde även -u --progress så att man ser nedladdningen av stora filer.

Hmm, ngn som har ork att förklara hur jag ordnar så att en viss rsync körs med ett visst tidsintervall? Tänkte att jag skulle automatisera uppdatering av filerna på webbservern. Har ingen koll på cron men skall kolla man page.

  • Medlem
  • Uppsala
  • 2004-04-20 19:33

om du ska ha det som cronjob för din egna user ändrar du enklast din crontab på med parametern -e
en fördel är om miljövariabeln EDITOR är satt till en editor du kan.. som vi/vim/emacs eller något annat vettigt.
i crontab:en ska du ha en rad i stil med denna:
Minut Timme Månad Dag i månad Veckodag och sist vilket script du vill köra
05 8 * * 1-5 mitt-feta-uppladnings-script.sh

* är då wildcard för en viss parameter.
du vill kanske ha något i stil med:
*/30 * * * * updatera-www.sh
då kommer den köra updatera-www.sh varje halvtimme

det var väl allt jag kunde gräva fram ur minnet.. ytterligare och troligen bättre förklaringar hittar du i man sidan för cron

/Johan

Kolla Cronnix för att få ett gränssnitt till cron:
http://www.koch-schmidt.de/cronnix/

//Mikael

Jag antar att du har satt upp ssh nycklar, så du slipper att skriva in lösenord, också?

gör nyckeln med:
# ssh-keygen -f minnyckel -t dsa -b 1024
Du klistrar in minnyckel.pub i ~erikjohansson/.ssh/authorized_keys
och skriver sedan
rsync -e 'ssh -i /var/er/min/nyckel/minnyckel' FRÅN TILL

  • Medlem
  • International user
  • 2004-05-02 18:28
Ursprungligen av Erik Johansson:

Jag antar att du har satt upp ssh nycklar, så du slipper att skriva in lösenord, också?

gör nyckeln med:
# ssh-keygen -f minnyckel -t dsa -b 1024
Du klistrar in minnyckel.pub i ~erikjohansson/.ssh/authorized_keys
och skriver sedan
rsync -e 'ssh -i /var/er/min/nyckel/minnyckel' FRÅN TILL

Har testat och tror jag har missförstått ngt i din beskrivning. Detta har jag gjort:
-skapat nyckeln, inga problem.
-öppnat minnyckel.pdb i bbeedit och kopierat texten.
-skapat authorized_keys i ~/.ssh/ och klistrat in texten

Vilken sökväg är det du menar med var/er/min/nyckel/minnyckel? Är det till pdb-filen, samma fil utan ändelse, eller filen i .ssh-mappen? Jag körde med pdb-filen och fick error. FRÅN TILL översatt jag till: remoteuser@ipaddress localuser@ipaddress

Annars funkar rsync kanon!

//mattan

Cron fråga: Vad händer om det tidigare cron-kommandot ej är klart när cron triggar det följande gång? Ignoreras det, startar det parallellt, eller ersätter det nya det pågående?

  • Medlem
  • International user
  • 2004-05-02 21:16
  • Medlem
  • International user
  • 2004-05-02 21:19
Ursprungligen av mattan:

Cron fråga: Vad händer om det tidigare cron-kommandot ej är klart när cron triggar det följande gång? Ignoreras det, startar det parallellt, eller ersätter det nya det pågående?

Cron startar en ny instans med ett nytt pid (process id).

  • Medlem
  • International user
  • 2004-05-02 21:38
Ursprungligen av mattan:

Cron fråga: Vad händer om det tidigare cron-kommandot ej är klart när cron triggar det följande gång? Ignoreras det, startar det parallellt, eller ersätter det nya det pågående?

Annars är det lätt att förbjuda ett script att starta igen, om föregående inte är klart. Du skapar en fil med exekveringsstatus i '/tmp'. Det första som sedan ditt script kollar är om det första har flaggat "jag är klar".

#!/bin/sh

exe_status=`cat /tmp/detta_script_status`
echo 'exe_status='$exe_status

if [ $exe_status = 'false' ]
then
	echo 'Fick inte köra...'
	# Avbryter exekveringen (loggar ut)
	exit
else
	# Här talar vi om för en eventuell ny instans
	# att det INTE är tillåtet att köras.
	echo 'false' > /tmp/detta_script_status
	
	
	# Här följer hela ditt script...
	echo 'Jag kör...'
	
	
	# Glöm inte att flagga "jag är klar"
	echo 'true' > /tmp/detta_script_status
fi
Senast redigerat 2004-05-02 22:02
1
Bevaka tråden