"Adb पुल" के साथ केवल नई फ़ाइलों को कैसे खींचें? (Android एसडीके उपयोगिता)


13

"एडीबी पुल / sdcard /" कमांड के साथ मैं अपने एंड्रॉइड फोन की आंतरिक मेमोरी की सभी सामग्रियों को अपने वर्तमान स्थानीय निर्देशिका में कॉपी कर सकता हूं (और "एडीबी पुल / मेन्ट / एक्सटर्डकार्ड /" बाहरी एसडी कार्ड के साथ ऐसा ही करता है)। लेकिन वह कमांड हमेशा सब कुछ कॉपी करता है, यहां तक ​​कि फाइलें जो मैंने पहले ही स्थानीय रूप से संग्रहीत की हैं।

क्या केवल नई और संशोधित फ़ाइलों की प्रतिलिपि बनाने का कोई तरीका है? (नई तारीख वाली फाइलें)

जवाबों:


9

जैसा कि ss-3-1415926535897932384626433 द्वारा वर्णित है, कोई झंडा नहीं है, लेकिन आपको पहले फाइलों की एक सूची प्राप्त करनी होगी और फिर जांचें कि क्या आपकी स्थानीय फाइलें मेल खाती हैं। मैंने इसके लिए थोड़ी स्क्रिप्ट लिखी है:

#!/bin/sh

rfolder=/sdcard/DCIM/Camera
lfolder=Camera

adb shell ls "$rfolder" > android.files

ls -1 "$lfolder" > local.files

rm -f update.files
touch update.files

while IFS=  read -r q; do
  # Remove non-printable characters (are not visible on console)
  l=$(echo ${q} | sed 's/[^[:print:]]//')
  # Populate files to update
  if ! grep -q "$l" local.files; then         
    echo "$l" >> update.files
  fi  
done < android.files

script_dir=$(pwd)
cd $lfolder

while IFS=  read -r q; do
  # Remove non-printable characters (are not visible on console)
  l=$(echo ${q} | sed 's/[^[:print:]]//')
  echo "Get file: $l"
  adb pull "$rfolder/$l"
done < "${script_dir}"/update.files

रिमोट फ़ोल्डर rfolderऔर स्थानीय फ़ोल्डर lfolderको अपनी पसंद के स्थानों पर समायोजित करें ।


यह बहुत अच्छा लग रहा है। क्या यह पुनरावर्ती या सिर्फ एक ही निर्देशिका में काम करता है और कोई उपनिर्देशिका नहीं?
OMA

यह वास्तव में गैर-पुनरावर्ती है, लेकिन सुधार करने के लिए स्वतंत्र महसूस करता है। :-)
ऐनी वैन रोसम

यह भी ध्यान दें कि मैं यहाँ तारीखों की तुलना अभी तक नहीं करता हूँ, इसलिए यदि आपके पास परिवर्तित फ़ाइलें हैं तो वे अपडेट नहीं होंगी।
ऐनी वैन रोसुम

7

adb-sync - छोटी, फिर भी शक्तिशाली पायथन स्क्रिप्ट जो आपके सभी पूछे और अधिक कर सकती है ... https://github.com/google/adb-sync


हालांकि लिंक शायद इस उपयोगकर्ता के लिए उत्तर है, इसे काम करने के लिए पूरी तरह से विधि और प्रक्रिया के माध्यम से समझाने के लिए सबसे अच्छा है। android.stackexchange.com/help/how-to-answer
acejavelin

उल्लेख के लिए धन्यवाद। मुझे अपने उपयोग-मामले के लिए काम करने के लिए स्रोत कोड में कई बदलाव करने पड़े (दुर्घटना के कारण Windows के लिए अवैध रास्ते, स्पष्ट रूप से अजगर संस्करण बेमेल, आदि - विवरण के लिए, उन मुद्दों को देखें जिनमें मैंने टिप्पणी की थी), लेकिन यह समाप्त हो रहा है एकमात्र तरीका मैं अपनी फ़ाइलों को दूषित डेटा विभाजन से पुनर्प्राप्त करने में सक्षम था। (पूरी निर्देशिका की adb पुल विभिन्न फाइलों पर दुर्घटनाग्रस्त हो जाएगी, और मैं मैन्युअल रूप से प्रत्येक को हटाना नहीं चाहता था फिर पूरे हस्तांतरण को फिर से शुरू करें - adb-sync [+ my संशोधनों] के साथ यह सिर्फ एक फ़ाइल को विफल कर देगा फिर जारी रखें)
वेनरिक्स

4

adb pull चयनित फ़ाइलों को खींचने के लिए एक ध्वज प्रदान करने के लिए प्रतीत नहीं होता है

वर्कअराउंड के रूप में, आप यह कर सकते हैं: adb shell [Unix shell command]चयनित फ़ाइलों को एक अस्थायी स्थान पर कॉपी करने के लिए उपयोग करें और फिर उस स्थान से सभी फ़ाइलों को खींचें।

अद्यतन:
आप cp -u [source] [destination]यूनिक्स शेल कमांड का उपयोग केवल बाद की रन पर संशोधित फ़ाइलों को कॉपी करने के लिए कर सकते हैं । -rयदि आवश्यक हो, तो आप इसे उपनिर्देशिका पुनरावर्ती पर उपयोग करने के लिए ध्वज का उपयोग भी कर सकते हैं ।


आपके उत्तर के लिए धन्यवाद। सभी फ़ाइलों को किसी अन्य स्थान पर कॉपी करना तब शायद केवल एक बदली हुई फ़ाइल को अपडेट करना बहुत धीमा हो। बहुत बुरा है कि adb केवल नई फ़ाइलों की प्रतिलिपि बनाने के लिए साबित नहीं करता है।
ओएमए

@OMA आप नई फ़ाइलों की सूची प्राप्त करने के लिए शेल का उपयोग कर सकते हैं, और फिर adb pullउस सूची का उपयोग कर सकते हैं।
मैथ्यू पढ़ें

@MatthewRead कैसे करना है पर कोई संकेत? धन्यवाद!
ओएमए

@OMA मैं इसके साथ आपकी समस्या को समझने में असमर्थ हूं। एक पंक्ति में दोनों कमांड का उपयोग करें या उपनाम बनाएं (ऑपरेशन के बाद अस्थायी स्थान को शुद्ध करने के लिए एक कमांड भी जोड़ें)। अगर उसके लिए adb पुल का झंडा था, तो यह उसी तरह काम करेगा।
एंड्रॉइड क्वेसिटो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.