लिनक्स में कॉपी / मूव / डिलीट के लिए क्यू फाइल का प्रोग्राम?


10

मैंने टेरास्कोपी (विंडोज) की तरह लिनक्स के जवाब के लिए नेट खोजा है ... लेकिन कुछ भी उपयुक्त नहीं मिला।

निकटतम चीजें जो मुझे मिली हैं:

  • Krusader। उनकी विशेषताओं में उल्लेख किया गया है लेकिन 'अभी तक लागू नहीं' के रूप में संकेत दिया गया है।
  • MiniCopier। एक जावा आधारित ऐप http://a.courreges.free.fr/projets/minicopier/minicopier-en.php
  • rsync एक विकल्प नहीं है।

क्या कोई मुझे एक साधारण फ़ाइल कॉपी टूल की सिफारिश कर सकता है जो कॉपी / मूव / डिलीट के लिए फाइलों को कतार में लगा सकता है? अधिमानतः अगर मैं नॉटिलस से खींच और छोड़ सकता हूं।

अगर ऐसा कुछ मौजूद नहीं है, तो क्या कोई मुझे बता सकता है कि क्यों? ... क्या मैं अकेला व्यक्ति हूँ जिसे इस तरह की कोई चीज़ चाहिए?


2
यदि आप वास्तव में समझा सकते हैं कि आप क्या चाहते हैं, तो यह उपयोगी होगा। मुझे लगता है कि अधिकांश लिनक्स उपयोगकर्ता "टेराकोपी" से परिचित नहीं होंगे।
पेल्टियर

1
क्या ऐसा इसलिए है क्योंकि बड़ी प्रतियां और हटाए जाने में समय लगता है और जीयूआई इंटरफ़ेस अनुपलब्ध / कम उपयोगी है, जबकि वे चल रहे हैं?
dmckee --- पूर्व-संचालक बिल्ली का बच्चा

इस अनुरोध का आंशिक विवरण यहाँ पाया जा सकता है: superuser.com/questions/9284/…
dmckee --- पूर्व-संचालक बिल्ली का बच्चा

एक मिनट रुको, क्या मिनीकॉपियर लिनक्स के लिए उपलब्ध नहीं है? यह एक जावा ऐप है।
रयान सी। थॉम्पसन

1
@ टोबू टेराकोपी कतार में कई काम कर सकते हैं और रोक सकते हैं
कोकिज़ू

जवाबों:


3

मैंने इस समस्या को हल करने के लिए, यह सरल स्क्रिप्ट लिखी, जिसे मैंने 'cpw' कहा।

आप इसे वैसे ही इस्तेमाल करते हैं जैसे आप cp का उपयोग करते हैं ... केवल अंतर यह है कि यह किसी भी cpw प्रक्रियाओं की एक सरणी बनाता है जो पहले से ही चालू होने पर चल रही हैं, और cp पर कमांड को पारित करने से पहले उनके समाप्त होने का इंतजार करता है। इस तरह, यह एक स्व-संगठित कतार की तरह व्यवहार करता है।

आप बैकग्राउंड cpw जॉब्स को जोड़कर रख सकते हैं, लेकिन वे एक-दूसरे पर कदम नहीं रखेंगे। वे एक समय में एक निष्पादित करेंगे।

मुझे यकीन है कि अन्य लोग सुधार सुझा सकते हैं।

#!/bin/bash

cpwpids=(`ps -ef | grep $USER | grep 'cpw' | grep -v grep | grep -v $$ | awk '{ print $2 }'`) #build an array of all cpw procs for this user that aren't this one.

cpwcnt=${#cpwpids[@]} # number of elemenets in the above array
cnt=$cpwcnt # counter to be decremented each pass
while [ $cnt -gt 0 ]
do
    cnt=$cpwcnt
    for i in "${cpwpids[@]}" # check if each pid has died yet
    do
        ps --pid $i >/dev/null
        if [ $? -gt 0 ]
        then
            let "cnt -= 1"
        fi
    done
    sleep 2
done
cp -v "$@" >> /tmp/cpw.log #log

उपयोग उदाहरण:

$ cpw -R /src/tree /dest/tree &

बस एक चेतावनी, मैंने इस स्क्रिप्ट की कोशिश की है और एक कारण के लिए जिसकी मैंने आगे जांच नहीं की है, यह अनिश्चित रूप से अन्य लिपियों के समाप्त होने की प्रतीक्षा कर सकता है। बैश में विशिष्टता प्राप्त करने का अधिक विश्वसनीय तरीका झुंड-ई का उपयोग करना है। उदाहरण के लिए यहाँ देखें: stackoverflow.com/questions/17996577/…
px1mp

1

मेरे अनुभव में, लिनक्स में एक साथ कुछ प्रतियां करना वास्तव में समग्र प्रवाह को कम नहीं करता है। थ्रूपुट का मेरा माप rsync के -P तर्क पर आधारित है। मेरा विशेष मामला एक ही समय में USB हार्ड ड्राइव से बड़ी फ़ाइलों से भरे कई फ़ोल्डरों को अलग से कॉपी कर रहा है।

इसलिए जब तक आप एक ही बार में बहुत सारी चीजों की नकल नहीं कर रहे हैं , आपको ठीक होना चाहिए।


कहने के लिए क्षमा करें, लेकिन यह एक टिप्पणी की तरह है। राय का बहुत, वास्तव में एक जवाब नहीं।
मृचि

1

चूंकि जोश अर्नबर्ग द्वारा दी गई स्क्रिप्ट में कुछ गतिरोध मुद्दे हो सकते हैं (जो मैंने अभी तक अनुभव नहीं किया है, लेकिन इसकी जांच भी नहीं की है), मैंने अपने दम पर कुछ लिखा है। इसमें गतिरोध की समस्या नहीं होनी चाहिए। यह किसी भी शेल कमांड के लिए काम करता है, न कि केवल cp के लिए।

Contents of ~/bin/q

#!/bin/bash

#this waits for any PIDs to finish
anywait(){

    for pid in "$@"; do
        while kill -0 "$pid" 2&>1 >/dev/null; do
            sleep 0.5
        done
    done
}


PIDFILE=~/.q.pid

#open PIDFILE and aquire lock
exec 9>>$PIDFILE
flock -w2 9 || { echo "ERROR: flock() failed." >&2; exit 1; }

#read previous instances PID from PIDFILE and write own PID to PIDFILE
OLDPID=$(<$PIDFILE)
echo $$>$PIDFILE

#release lock
flock -u 9

#wait for OLDPID
anywait $OLDPID

#do stuff
"$@"


#afterwards: cleanup (if pidfile still contains own PID, truncate it)
flock -w2 9 || { echo "ERROR: flock() failed." >&2; exit 1; }
if [ $(<$PIDFILE) == $$ ]; then
truncate -s0 $PIDFILE
fi
flock -u 9

यह प्रक्रियाओं की एक श्रृंखला बनाता है, प्रत्येक पिछले एक की प्रतीक्षा कर रहा है। यदि श्रृंखला के बीच की प्रक्रिया प्रतीक्षा करते समय दुर्घटनाग्रस्त हो जाती है (असंभव लेकिन असंभव नहीं), तो श्रृंखला टूट जाती है और दोनों भाग समानांतर में चलते हैं। यदि प्रक्रिया में से एक को मार दिया जाता है तो ऐसा ही होता है।

इस तरह का उपयोग:

q $COMMAND $ARGS

या और भी

q $COMMAND $ARGS; $ANOTHER_COMMAND $MORE_ARGS

टाइप करके टेस्ट करें

q sleep 10 &
q echo blubb &

और पाया कि 10 सेकंड के बाद ब्लब प्रिंट हो जाता है।


मुझे कभी-कभी while kill -0 "$pid" 2&>1 >/dev/null; doलाइन के लिए अनुमति से वंचित त्रुटि मिलती है । कोई विचार?
मृचि

ठीक है, इसलिए लंबे समय तक इसका उपयोग करने के बाद, मैं कह सकता हूं कि यह काम नहीं करता है। हो सकता है कि एक्सेस एरर इसका कारण हो लेकिन मैं cpएक दूसरे पर कई स्टेपिंग कर सकता हूं ।
मृकफ


0

मैं लिनक्स के लिए ऐसा कुछ भी नहीं जानता (हालांकि यह कहना नहीं है कि कहीं एक नहीं है)। लिनक्स सॉफ्टवेयर लिनक्स उपयोगकर्ताओं द्वारा लिखित पाने के लिए जाता है। अनुभवी लिनक्स उपयोगकर्ता इस तरह एक उपकरण बनाने के लिए नहीं सोच सकते हैं, क्योंकि अगर वे एक जीयूआई सत्र के दौरान प्रतियों की किसी भी मंदी की सूचना देते हैं, तो वे टर्मिनल पर जाने और कमांडलाइन के माध्यम से कॉपी करने की संभावना रखते हैं।

यहाँ कुछ बुनियादी कमांडलाइन उपयोगिताओं की नकल कर रहे हैं जो बहुत तेज़ हैं और आपके डेस्कटॉप वातावरण को प्रभावित नहीं करना चाहिए:

  • cp ("cp foo / path / to / bar" foo को बार में कॉपी करेगा)
  • mv ("mv foo / पाथ / टू / बार" चलेगा (नाम बदलना) foo to bar)
  • टार ("टार cf - foo | (सीडी / पथ / से / आर्काइव /; टार xf -)" एक निर्देशिका को पुन: कॉपी करेगा)
  • rsync ("rsync -r foo / path / to / आर्काइव /" पुनरावर्ती रूप से एक निर्देशिका कॉपी करेगा)

0

फ़ाइलों की एक सूची बनाएँ और प्रतिलिपि बनाने के लिए SCP का उपयोग करें। Linux में अच्छी बात यह है कि आप इको का उपयोग करके अपनी टेक्स्ट फ़ाइल में जोड़ सकते हैं।


0

मुझे यह यूनिक्स बैच सिस्टम प्रोजेक्ट टास्क स्पूलर नाम से मिला, जिसे आप कार्यों को कतारबद्ध करते हैं।

या आप कर सकते हैं sudo apt-get install task-spooler

एक बार स्थापित होने के बाद, आप इसे पंक्तिबद्ध करने के लिए किसी भी नियमित शेल कमांड के सामने बस ts(या tspउबंटू / डेबियन सिस्टम के लिए) रख सकते हैं ।

इस पृष्ठ में इसके उपयोग के बारे में बहुत सारे उदाहरण हैं: https://www.ostechnix.com/add-linux-commands-queue-execute-one-one/ या आप यहां एक वीडियो देखें : https://www.youtube.com / घड़ी? v = wv8D8wT20ZY

मैंने इसे सत्यापित किया और यह मेरी सभी cpआज्ञाओं के लिए अपेक्षित रूप से काम कर रहा है ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.