Làm thế nào để sao chép tất cả các hình ảnh trong bộ sưu tập vào máy tính để bàn linux?


7

Tôi có một loạt ảnh trên Samsung Galaxy Tab chạy 3.2 mà tôi muốn sao chép qua USB sang máy chính chạy Linux để tôi có thể làm việc với chúng bằng GIMP và các công cụ mạnh khác. Mặc dù điều này có vẻ như là một điều đơn giản và phổ biến để làm, tôi không tìm thấy cách nào để làm điều này sau nhiều giờ googling và thử nghiệm.

Một số câu trả lời và bài viết đã có giả định về sự tồn tại của sdcard mà tôi không có (AFIK), đề cập đến các thư mục có tên / dcim hoặc / emmc (sp?), Liên quan đến phần mềm chỉ dành cho Windows như Kies hoặc về một số chuyên ngành Vấn đề không liên quan ở đây.

Tôi hình dung tôi có thể chọc xung quanh hệ thống tệp của Galaxy Tab bằng adb, nhưng không tìm thấy nơi nào chứa .jpg hoặc các tệp hình ảnh khác, mà tôi nên có ít nhất 30 hoặc hơn. Nếu tôi biết đường dẫn, tôi có thể thực hiện thao tác kéo adb để lấy ảnh của mình.

Nếu có thể, tôi thích sử dụng kéo adb hơn, vì nó có thể được tự động hóa, nhưng tôi cũng tự hỏi làm thế nào dân gian, những người không thường xuyên, lấy ảnh của họ ra khỏi máy tính bảng của họ. Tôi đã đọc về MTP và cách thức hoạt động của thiết bị lưu trữ dung lượng lớn USB không hoạt động với Galaxy Tab (hoặc bất cứ thứ gì Samsung?)

Để rõ ràng, hình ảnh của tôi tồn tại trên máy tính bảng. Tôi có thể thấy tất cả chúng trong Thư viện, như một người dùng cuối thông thường. Tôi có cáp USB thích hợp và adb chạy tốt.

Câu trả lời:


6

Tôi giả sử bạn có Galaxy Tab với Honeycomb và không có khe cắm thẻ SD, nhưng có bộ nhớ trong 16/32 GB. Trong Honeycomb, chế độ MTP (Windows Media Transfer Protocol) được sử dụng thay cho bộ lưu trữ USB. Đó là lý do tại sao nó không làm việc cho bạn.

Trước tiên hãy đọc MTP là gì và tại sao nó được sử dụng bởi các OEM tại đây. MTP và ICS . Ngoài ra Câu hỏi này sẽ hữu ích - Android Stack Exchange - Tôi có thể tắt chế độ MTP và chỉ cần có kết nối USB thông thường không?

Bạn đã thử kích hoạt hỗ trợ MTP cho Linux chưa? Đây là các bước cho bản phân phối Ubuntu - Hướng dẫn cài đặt MTP .

Ngoài ra, thông qua việc sử dụng ADB Tôi tin rằng bạn có thể truy cập các tệp Thư viện trong /mnt/sdcard/. Các sdcardthư mục nên có mặt ở đó ngay cả khi bạn không có một khe cắm thẻ SD. Hình ảnh máy ảnh sẽ được trong /DCIMthư mục.

Các bước đầy đủ sẽ là (nếu có ai cần) -

adb shell
cd /mnt/sdcard/DCIM/

Bạn có thể kiểm tra thư mục nào tồn tại ở đây và xác minh xem các tệp Media của bạn có ở đây hay không.


Có một / mnt nhưng không có gì bên trong nó. Đối với tôi, thư mục sdcard huyền thoại này là có thật như kỳ lân!
DarenW

Cảm ơn con trỏ đến một cách nhanh chóng để duyệt nội dung thiết bị. :-) Đó là một cách nhanh chóng để có được những gì tôi cần! Cảm ơn!
Norman H

1

Tôi đã viết một đoạn script nhỏ để thực hiện điều này cho tôi để xóa các tệp khỏi thiết bị sau khi kéo:

#!/bin/sh
cleanup() {
    [[ -n "$dest" ]] && cd "$OLDPWD" && rmdir --ignore-fail-on-non-empty "$dest"
}
trap cleanup EXIT

DIRS=( /storage/emulated/0/DCIM/Camera
       /storage/emulated/0/Pictures/Office\ Lens )
dest=$(mktemp -d -p .) && cd $dest
echo output directory: $(pwd)
for dir in "${DIRS[@]}"
do
    echo downloading from $dir
    adb shell ls "'$dir'/*.jpg" 2>/dev/null | xargs -I{} -n 1 -d '\n' sh -c 'adb pull -a "$1" && adb shell rm "\"$1\"" && adb shell am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN_FILE -d \"file://$1\" || exit 255' -- {} || break
done

Quá trình chính là một vòng lặp được thực hiện một lần cho mỗi thư mục $dirđược chỉ định trong $DIRSđó kết thúc ở lần thất bại đầu tiên.

Việc breakngăn chặn xử lý trong trường hợp xảy ra lỗi để tập lệnh thoát khỏi lỗi đầu tiên.

Vòng lặp thực thi một lệnh ghép cho mỗi thư mục được liệt kê $DIRSdưới dạng $dir. Phần đầu tiên là đơn giản:

ls "'$dir'/*.jpg" 2>/dev/null

Nó thực hiện những gì nó nói trên hộp thiếc - liệt kê tất cả các tệp JPEG nằm ở $dir. Các 2>/dev/nullẩn No such file or directorythông báo lỗi nếu không sẽ được hiển thị khi không có tập tin như vậy.

Đầu ra của lsđược dẫn vào xargs- các đối số được đặt {}làm trình giữ chỗ, \nlàm dấu phân cách và xử lý từng tệp một. Dòng lệnh được sử dụng để xử lý mỗi tệp sau:

sh -c 'adb pull -a "$1" && adb shell rm "\"$1\"" && adb shell am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN_FILE -d \"file://$1\" || exit 255' -- {}

Bản thân nó là một lệnh ghép gồm ba adblệnh được thực thi bởi shshell được cung cấp tệp dưới dạng đối số ( $1) được chỉ định bởi {}trình giữ chỗ của nó .

Lệnh đầu tiên tải tập tin:

adb pull -a "$1"

Nếu thành công thì lệnh thứ hai sẽ xóa tệp khỏi thiết bị Android:

adb shell rm "\"$1\""

Việc trích dẫn thêm là cần thiết để tên tệp chứa khoảng trắng được truyền đúng vào adb shell. Nếu lệnh đó thành công thì lệnh cuối cùng sẽ cho thiết bị biết tệp đã biến mất:

adb shell am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN_FILE -d \"file://$1\"

Một lần nữa, trích dẫn được áp dụng cho adb shell. Bước này là bắt buộc để cập nhật hình ảnh được liệt kê trong ứng dụng Thư viện (nếu không chúng có thể được lưu trong bộ nhớ cache và vẫn hiển thị).

Lệnh ghép kết thúc với exit 255trong trường hợp bất kỳ adblệnh nào bị lỗi. Điều này có ý nghĩa đặc biệt xargsvà khiến nó chấm dứt mà không xử lý thêm tệp nào.

Đây là một kịch bản nhanh và bẩn - có thể nó có thể được cải thiện nhưng hy vọng nó hữu ích vì nó là như vậy.


0

Nếu bạn không thể tìm thấy các tệp của mình một cách dễ dàng bằng ADB trên / mnt / sdcard (như Sameer đề cập là nơi cần có, ngay cả khi bạn không có thẻ SD bên ngoài), bạn có thể thấy sử dụng tệp cục bộ dễ dàng hơn thám hiểm để tìm kiếm / quản lý các bức ảnh của bạn. Đối với nhiều bản phát hành (như Ubuntu), bạn cần thêm thủ công nhận dạng usb cho thiết bịudev sau khi cài đặt ADB.


Có thật không? Tôi đã kết nối thiết bị của mình qua USB với "nó vừa hoạt động" (TM). Tôi đang chạy Ubuntu 10,4
CjS

Bản thân tôi chưa bao giờ thấy một kết nối mà không thực hiện thêm thủ công. Có phải là một máy tính bảng? Nó có thể tự nhận dạng khác với USB so với điện thoại hoặc nhà sản xuất có thể đã điều chỉnh nó.
Logo

Có, một chiếc Asus TF-101 chạy 3.2 và 4.0.x. Nhưng điện thoại của tôi (LG Optimus One) cũng kết nối miễn là kiểm tra gỡ lỗi usb trong cài đặt.
CjS

Bây giờ tôi nghĩ về nó, Acer Aconia không "chỉ hoạt động", vì vậy nó có thể phụ thuộc vào nhà sản xuất.
CjS

0

Tôi không nghĩ hệ thống tập tin trên các tab Android là phổ quát.

Tôi chưa chơi với Galaxy Tab, nhưng trên Asus TF101 của tôi, bộ nhớ trong nằm ở / mnt / sdcard, trong khi trên Acer Iconia của cha tôi, đó là / sdcard (IIRC).

Từ một google nhanh, có vẻ như ảnh Galaxy Tab được lưu trữ trong / sdcard / DCIM / Camera / hoặc / Data / DCIM / Camera / để lưu trữ nội bộ hoặc có lẽ / sdcard / bên ngoài_sd / DCIM / Camera / nếu sử dụng thẻ sdcard 'bên ngoài' .

Tôi sẽ tìm ba thư mục này bằng trình quản lý tệp trên thiết bị của bạn (hoặc ADB) và sau đó sử dụng ADB để kéo chúng như bạn đã mô tả khi bạn tìm thấy ảnh của mình.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.