"adb pull"을 사용하여 최신 파일 만 가져 오는 방법은 무엇입니까? (Android SDK 유틸리티)


13

"adb pull / sdcard /"명령을 사용하면 안드로이드 폰 내부 메모리의 모든 내용을 현재 로컬 디렉토리에 복사 할 수 있습니다 ( "adb pull / mnt / extSdCard /"는 외부 SD 카드와 동일 함). 그러나이 명령은 항상 로컬에 이미 저장 한 파일을 포함하여 모든 것을 복사합니다.

새 파일과 수정 된 파일 만 복사 할 수있는 방법이 있습니까? (최신 날짜가있는 파일)

답변:


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

이것은 실제로 재귀 적이 지 않지만 자유롭게 개선하십시오. :-)
Anne van Rossum

또한 여기서 날짜를 아직 비교하지 않았으므로 파일을 변경하면 업데이트되지 않습니다.
앤 반 로섬

7

adb-sync-작지만 강력한 파이썬 스크립트로 모든 질문을 할 수 있습니다 ... https://github.com/google/adb-sync


링크가이 사용자에 대한 해답 일지 모르지만 작동하도록 방법과 프로세스를 완전히 설명하는 것이 가장 좋습니다. android.stackexchange.com/help/how-to-answer
acejavelin

언급 해 주셔서 감사합니다. 유스 케이스 (Windows의 충돌 경로, Python 버전 불일치 등을 일으키는 잘못된 경로 등)에서 작동하도록 소스 코드를 여러 번 변경해야했지만 자세한 내용은 내가 언급 한 문제를 참조하십시오. 손상된 데이터 파티션에서 파일을 검색 할 수있는 유일한 방법입니다. (전체 디렉토리의 adb 풀은 다양한 파일에서 충돌 할 수 있으며 각 파일을 수동으로 삭제 한 다음 전체 전송을 다시 시작하고 싶지는 않습니다. adb-sync [+ my modified]를 사용하면 하나의 파일이 실패합니다. 다음 계속)
Venryx

4

adb pull 선택한 파일을 가져 오는 플래그를 제공하지 않는 것 같습니다 .

해결 방법으로 다음을 수행 할 수 있습니다. adb shell [Unix shell command]선택한 파일을 임시 위치로 복사 한 다음 해당 위치에서 모든 파일을 가져옵니다.

업데이트 : unix shell 명령을
사용 cp -u [source] [destination]하여 후속 실행시 수정 된 파일 만 복사 할 수 있습니다 . -r필요한 경우 플래그를 사용하여 재귀 서브 디렉토리에서이를 사용할 수 있습니다 .


답변 주셔서 감사합니다. 모든 파일을 다른 위치로 복사 한 다음 변경된 파일 하나만 업데이트하면 속도가 느려집니다. adb가 최신 파일 만 복사하는 방법이 아니라는 점이 너무 나쁩니다.
OMA

@OMA 셸을 사용하여 새 파일 목록을 가져온 다음 adb pull해당 목록에서 사용할 수 있습니다 .
Matthew 읽기

@MatthewRead 그렇게하는 방법에 대한 힌트가 있습니까? 감사!
OMA

@OMA 나는 당신의 문제를 이해할 수 없습니다. 두 명령을 한 줄에 사용하거나 별명을 작성하십시오 (작업 후 임시 위치를 제거하는 명령을 추가하십시오). adb pull 플래그가 있으면 동일한 방식으로 작동합니다.
Android Quesito
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.