Προς το περιεχόμενο

[INFO] Η δύναμη της Κονσόλας


Manos-Sx

Προτεινόμενες αναρτήσεις

Χρησιμοποιω το παρακατω για να κατεβασω ενα συνολο urls και να μπορω να το σταματαω και να το συνεχιζω οταν θελω

>wget --limit-rate=100k -c -nc -i lista

 

οπου

- limit-rate=100k: ο περιορισμος της ταχυτητας σε 100k για να μην κολλανε οι αλλες εφαρμογες που εχουν προσβαση στο ιντερνετ.

- c: για να συνεχισει κατι που εχει μισοκατεβει

- nc: για να μην κατεβασει ξανα κατι που εχει ηδη κατεβει

- i lista: η λιστα με τα url

 

Εχω το εξης προβλημα.

Εστω οτι το διεκοψα οταν το file1.rar κατεβαινε. Οταν το ξανατρεξω για να συνεχισει, βλεπει οτι το file1.rar υπαρχει ηδη, ασχετως αν ειναι μισοκατευασμενο, το πηδαει και παει στο file2.rar :|

Τι πρεπει να κανω ωστε να συνεχιζει τα μισοκατεβασμενα της λιστας, εκτος απο το -c, αλλα να μην κατεβαζει τα οσα ηδη κατεβηκαν?

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • Απαντ. 889
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Μου φαίνεται αυτό θα σου κάνει

 

>wget --limit-rate=100k -c -Ν -i lista

When running Wget with ‘-N’, with or without ‘-r’ or ‘-p’, the decision as to whether or not to download a newer copy of a file depends on the local and remote timestamp and size of the file (see Time-Stamping). ‘-nc’ may not be specified at the same time as ‘-N’.

 

 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • 2 εβδομάδες αργότερα...
  • 4 εβδομάδες αργότερα...

>for f in /media/[0-9]*/*.txt
 do
   if [ -e ~/$f ] ; then
     echo "$f exists" 
   else
     echo "now copying files" 
     cp $f ~/
   fi
 done

 

αυτό γιατί δε μου παίζει?

δεν μπαίνει στο πρώτο if, πάει συνέχεια στο else, ακόμα κι όταν κάνει copy το αρχείο

 

επίσης πως θα το κάνω να τρέχει συνέχεια?

να το βάλω μέσα σε while?

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Έχεις βάλει 2 special characters για το shell expansion και το test μάλλον μπερδεύεται. Κάνε ένα echo $f για να δείς σε τί γίνεται evaluate το f κάθε φορά. Επίσης,χρησιμοποίησε την basename για να πάρεις μόνο το filename και οχι το (absolute ή relative) path.

Ακόμη, το while (1) είναι C, στο bash είναι while [ 1 ] με προσοχή στα κενά γύρω από τον άσσο.

Τέλος, άν θέλεις να το κάνες να τρέχει επ' άπειρον κάντο έτσι αλλά βάλε και κανένα sleep στο τέλος του loop για να μή σου τρώει τον επεξεργαστή τζάμπα. Άν θέλεις όμως να τρέχει ανα x χρονικό διάστημα, βάλε το script στο crontab του χρήστη σου.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

το όνομα του αρχείου το παίρνει κανονικά η μεταβλητή, το έχω τσεκάρει

και το while σωστά το έχω και sleep έχω

το if exists δε με θέλει

 

με τη basename που είπες δεν κατάλαβα που θα τη χρησιμοποιήσω

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

έτσι όπως είναι ο κώδικας, ψάχνει αν υπάρχει το αρχείο: ~//media/[0-9]bla/bla.txt

γιατί το f είναι: /media/[0-9]bla/bla.txt

 

εσύ όμως θέλεις το f να είναι bla.txt για να ψάχνει αν υπάρχει το ~/bla.txt

 

με την basename του Nullscan καθαρίζεις:

 

>do

  filename=$(basename $f)

  if [ -e ~/$filename ] ; then...

  ...

  cp $f ~/
  
  ...

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...