Saya tidak menggunakan adbtetapi dari dokumen pulldapat digunakan untuk menarik seluruh direktori ??? Jika demikian dan ini adalah file yang dihasilkan oleh aplikasi Anda sendiri, mengapa tidak menuliskannya ke sub-direktori seperti /sdcard/mygpsfilesdan kemudian menggunakan adb pull /sdcard/mygpsfiles. Apakah itu akan berhasil?
Squonk
2
Sebagai alternatif, saya baru saja mencoba File Explorer dalam DDMSperspektif gerhana dan dapat memilih banyak file dari sdcard saya dan melakukan pullpada mereka. Jika Anda tidak menggunakan eclipse, DDMS tersedia sebagai alat SDK terpisah.
Squonk
monitorperintah berfungsi dengan baik, harus masuk <sdkdir>/tools!
Santosh Kumar
Jawaban:
142
Anda dapat menggunakan xargsdan hasil dari adb shell lsperintah yang menerima wildcard. Ini memungkinkan Anda untuk menyalin banyak file. Secara menjengkelkan, output dari adb shell lsperintah tersebut menyertakan karakter kontrol baris-feed yang dapat Anda hapus menggunakan tr -d '\r'.
FYI: Windows dan DOS menggunakan "\ r \ n" untuk pasangan carriage-return / line-feed (yaitu, bukan "\ n \ r").
BrainSlugs83
3
dalam kasus saya itu gagal mencoba menarik nama file (diperoleh dengan benar) dari direktori root android, untuk mengatasinya, saya menggunakan:adb shell "ls -d /mnt/sdcard/Pictures/Screenshots/*" | tr '\r' ' ' | xargs -n1 adb pull
rupps
4
Tidak berhasil mengatakan tr tidak dikenali sebagai perintah internal atau eksternal
Suncatcher
101
adb pull dapat menerima nama direktori alih-alih pada file dan itu akan menarik direktori dengan semua file di dalamnya.
Tarik semua jejak gps Anda di / sdcard / gpsTraces
adb pull /sdcard/gpsTraces/ .
Contoh dari adb pulldan adb pushdirektori rekursif:
@kakyo Ini berfungsi untuk subfolder untuk saya. periksa apakah Anda memiliki ADB terbaru dari google. (Saya menggunakan 1.0.29)
Ofir Luzon
Ya, saya menemukan bahwa itu berfungsi untuk folder yang tidak kosong pada akhirnya. Saya memiliki beberapa folder kosong yang tidak ditarik. Juga, tampaknya "push" itu non-rekursif?
kakyo
@kakyo Saya telah menambahkan output dari tarikan dan dorong rekursif ke jawaban saya. Anda benar tentang folder kosong, folder tersebut tidak ditarik atau didorong.
Ofir Luzon
1
Hati-hati: dengan ADB tarik file kehilangan tanggal modifikasi aslinya.
Stan
3
@Stan: kecuali Anda menggunakan opsi "-a" seperti dalam "adb pull [-a] <remote> ... <local>", yang menurut bantuan tersebut mempertahankan stempel waktu dan mode file.
Rusty Gear
27
./adb pull /sdcard <- gagal
./adb pull /sdcard/ <- bekerja secara rekursif - perhatikan garis miring di belakangnya
Diuji dengan Nexus 5 dan adb yang diunduh Maret 2014.
Di komputer saya, saya perlu menggunakan jalur lengkap ke adb, tetapi jika tidak, ini berfungsi dengan baik!
Dan J
Jawaban ini sebenarnya cukup cerdas. Kerja bagus!
Darth Egregious
6
Meskipun adb pullperintah mulai menerima nama folder untuk parameter jarak jauh, saya masih lebih suka menggunakan tarperintah. Ini memberikan lebih banyak fleksibilitas - memungkinkan pola nama file ( termasuk dan mengecualikan ), kontrol symlink, mempertahankan izin file. Sejak Android 6.0 Anda dapat menggunakan file bawaan. Sebelumnya Anda harus menggunakan alat pihak ketiga seperti busybox:
adb exec-out tar c sdcard/amazonmp3 > amazon.tar
Pastikan untuk menghilangkan petunjuk /di jalan Anda.
Oh, tidak berhasil. tar -tvf memberi tahu saya bahwa hasilnya tidak terlihat seperti arsip tar. Baiklah.
themuddler
Cara yang sangat kuat! Tetapi masalahnya adalah kesalahan / peringatan seperti "tar: menghapus awalan '/' dari nama anggota" ditambahkan ke file keluaran. Tidak tahu bagaimana menghilangkan ini.
x'ES
Saya mendapatkan file 1.5KB pada output.
Shayan
5
Saya telah membuat ini untuk kotak Windows, Sangat berguna untuk mentransfer file menggunakan wildcard tanpa memasang sistem file. Anda dapat menyertakan skrip ini di suatu tempat di jalur env.
adbpull.bat
@echo off
setlocal enabledelayedexpansion
if %1.==. (
echo Wilcard parameter is required.
gotoend
)
for /F "tokens=* USEBACKQ" %%F in (`adb shell ls %1`) do (
settext=%%F
set mfile=!text:~0,-1!
adb pull "!mfile!"
)
:end
endlocal
Selain itu menjadi satu karakter yang kurang untuk diketik (masalah besar) itu tidak mengubahnya -rmenjadi spasi. Ini adalah perbedaan yang signifikan, seolah-olah Anda mencoba melakukannya
Kartu liar berfungsi dalam kasus saya, saya telah menggunakan skrip sederhana berikut untuk mengimpor Gambar Whatsapp dari perangkat virtual saya ke desktop saya
Anda menggunakan wildcard untuk cp di Android dan bukan untuk menarik host, itulah mengapa ini berhasil. Alternatif yang bagus, meskipun menyalin ke / sdcard / membutuhkan memori ekstra dan membocorkan file pribadi ke sdcard.
pengguna905686
0
PowerShell:
adb shell ls /sdcard/gps*.trace | foreach {adb pull $_}
adb
tetapi dari dokumenpull
dapat digunakan untuk menarik seluruh direktori ??? Jika demikian dan ini adalah file yang dihasilkan oleh aplikasi Anda sendiri, mengapa tidak menuliskannya ke sub-direktori seperti/sdcard/mygpsfiles
dan kemudian menggunakanadb pull /sdcard/mygpsfiles
. Apakah itu akan berhasil?DDMS
perspektif gerhana dan dapat memilih banyak file dari sdcard saya dan melakukanpull
pada mereka. Jika Anda tidak menggunakan eclipse, DDMS tersedia sebagai alat SDK terpisah.monitor
perintah berfungsi dengan baik, harus masuk<sdkdir>/tools
!Jawaban:
Anda dapat menggunakan
xargs
dan hasil dariadb shell ls
perintah yang menerima wildcard. Ini memungkinkan Anda untuk menyalin banyak file. Secara menjengkelkan, output dariadb shell ls
perintah tersebut menyertakan karakter kontrol baris-feed yang dapat Anda hapus menggunakantr -d '\r'
.Contoh:
adb shell 'ls sdcard/gps*.trace' | tr -d '\r' | xargs -n1 adb pull adb shell 'ls /sdcard/*.txt' | tr -d '\r' | sed -e 's/^\///' | xargs -n1 adb pull
sumber
adb shell "ls -d /mnt/sdcard/Pictures/Screenshots/*" | tr '\r' ' ' | xargs -n1 adb pull
adb pull
dapat menerima nama direktori alih-alih pada file dan itu akan menarik direktori dengan semua file di dalamnya.Tarik semua jejak gps Anda di / sdcard / gpsTraces
adb pull /sdcard/gpsTraces/ .
Contoh dari
adb pull
danadb push
direktori rekursif:C:\Test>adb pull /data/misc/test/ . pull: building file list... pull: /data/misc/test/test1/test2/test.3 -> ./test1/test2/test.3 pull: /data/misc/test/test1/test2/test.2 -> ./test1/test2/test.2 pull: /data/misc/test/test1/test2/test.1 -> ./test1/test2/test.1 pull: /data/misc/test/test1/test.3 -> ./test1/test.3 pull: /data/misc/test/test1/test.2 -> ./test1/test.2 pull: /data/misc/test/test1/test.1 -> ./test1/test.1 pull: /data/misc/test/test.3 -> ./test.3 pull: /data/misc/test/test.2 -> ./test.2 pull: /data/misc/test/test.1 -> ./test.1 9 files pulled. 0 files skipped. 0 KB/s (45 bytes in 0.093s) C:\Test>adb push . /data/misc/test/ push: ./test1/test2/test.3 -> /data/misc/test/test1/test2/test.3 push: ./test1/test2/test.2 -> /data/misc/test/test1/test2/test.2 push: ./test1/test2/test.1 -> /data/misc/test/test1/test2/test.1 push: ./test1/test.3 -> /data/misc/test/test1/test.3 push: ./test1/test.2 -> /data/misc/test/test1/test.2 push: ./test1/test.1 -> /data/misc/test/test1/test.1 push: ./test.3 -> /data/misc/test/test.3 push: ./test.2 -> /data/misc/test/test.2 push: ./test.1 -> /data/misc/test/test.1 9 files pushed. 0 files skipped. 0 KB/s (45 bytes in 0.062s)
sumber
./adb pull /sdcard
<- gagal./adb pull /sdcard/
<- bekerja secara rekursif - perhatikan garis miring di belakangnyaDiuji dengan Nexus 5 dan adb yang diunduh Maret 2014.
sumber
Mengurai keluaran dari 'ls' umumnya merupakan ide yang buruk. Sebagai gantinya, gunakan 'temukan'.
adb shell 'find /sdcard/ -name "gps*.trace" -print0' | xargs -0 -n 1 adb pull
Mengapa Anda tidak perlu mengurai output ls
sumber
Meskipun
adb pull
perintah mulai menerima nama folder untuk parameter jarak jauh, saya masih lebih suka menggunakantar
perintah. Ini memberikan lebih banyak fleksibilitas - memungkinkan pola nama file ( termasuk dan mengecualikan ), kontrol symlink, mempertahankan izin file. Sejak Android 6.0 Anda dapat menggunakan file bawaan. Sebelumnya Anda harus menggunakan alat pihak ketiga sepertibusybox
:adb exec-out tar c sdcard/amazonmp3 > amazon.tar
Pastikan untuk menghilangkan petunjuk
/
di jalan Anda.sumber
Saya telah membuat ini untuk kotak Windows, Sangat berguna untuk mentransfer file menggunakan wildcard tanpa memasang sistem file. Anda dapat menyertakan skrip ini di suatu tempat di jalur env.
adbpull.bat
@echo off setlocal enabledelayedexpansion if %1.==. ( echo Wilcard parameter is required. goto end ) for /F "tokens=* USEBACKQ" %%F in (`adb shell ls %1`) do ( set text=%%F set mfile=!text:~0,-1! adb pull "!mfile!" ) :end endlocal
Contoh:
adbpull /sdcard/DCIM/Camera/IMG_2016*
sumber
ADBFS a FUSE Filesystem untuk Android Debug Bridge jika Anda menggunakan linux atau mac
sumber
Tarik direktori tersedia di alat android baru. (Saya tidak tahu dari versi mana itu ditambahkan, tetapi berfungsi pada ADT 21.1 terbaru)
adb pull /sdcard/Robotium-Screenshots pull: building file list... pull: /sdcard/Robotium-Screenshots/090313-110415.jpg -> ./090313-110415.jpg pull: /sdcard/Robotium-Screenshots/090313-110412.jpg -> ./090313-110412.jpg pull: /sdcard/Robotium-Screenshots/090313-110408.jpg -> ./090313-110408.jpg pull: /sdcard/Robotium-Screenshots/090313-110406.jpg -> ./090313-110406.jpg pull: /sdcard/Robotium-Screenshots/090313-110404.jpg -> ./090313-110404.jpg 5 files pulled. 0 files skipped. 61 KB/s (338736 bytes in 5.409s)
sumber
berdasarkan jawaban David, saya merasa ini sedikit lebih baik:
adb shell ls /foo | tr -d '\r' | xargs -n1 adb pull
Selain itu menjadi satu karakter yang kurang untuk diketik (masalah besar) itu tidak mengubahnya
-r
menjadi spasi. Ini adalah perbedaan yang signifikan, seolah-olah Anda mencoba melakukannyaadb shell ls /foo/myFile* | tr '\r' ' ' | xargs -i -n1 adb pull {} someDir
Anda akan mendapatkan kesalahan mengatakan
remote object '/foo/myFile1 ' does not exist
Sebagai gantinya Anda dapat melakukan ini, yang akan berhasil:
adb shell ls /foo/myFile* | tr -d '\r' | xargs -i -n1 adb pull {} someDir
sumber
Kartu liar berfungsi dalam kasus saya, saya telah menggunakan skrip sederhana berikut untuk mengimpor Gambar Whatsapp dari perangkat virtual saya ke desktop saya
#! /bin/bash mkdir -p ~/Pictures/Pictures_adb rm -f ~/Pictures/Pictures_adb/* cd ~/Pictures/Pictures_adb adb root adb shell 'cp /data/media/0/WhatsApp/Media/WhatsApp\ Profile\ Photos/* /sdcard/Pictures/;exit' adb pull /sdcard/Pictures mv ~/Pictures/Pictures_adb/Pictures/* ~/Pictures/Pictures_adb/ rmdir ~/Pictures/Pictures_adb/Pictures cd
sumber
PowerShell:
adb shell ls /sdcard/gps*.trace | foreach {adb pull $_}
sumber
Di Android, ada beberapa folder dengan izin terkait! Beberapa folder milik root- atau pengguna sistem.
Kalian harus mengubah hak akses file, folder sebelum melakukan "adb pull".
Perintah berikut dapat membantu:
adb shell su chmod -R 777 target_folder exit ... adb pull /.../target_folder/ . (current local folder)
sumber