안드로이드에 rsync하는 방법


50

음악을 재 동기화하기 위해 안드로이드 기기에 어떻게 연결할 수 있습니까?


어떤 조치가 해당 오류 메시지를 생성했는지 정확하게 설명하기 위해 이것을 편집하는 것이 좋습니다. (이 명령의 출력이 있다면 예를 들어, 전체 명령을 포함 할 수있다.)
엘리야 케이건에게

1
아마 흥미로운 : Syncopoli
DJCrashdummy

@DJCrashdummy 당신이 당신의 코멘트를 답변으로 쓰면, 나는 그것을 표명 할 것이다.
guettli

@guettli Syncopoli 는 단지 rsync-client 이기 때문에 (현재) 주석으로 만 썼습니다 .
DJCrashdummy

답변:


50

실제로 MTP / USB를 통한 rsync 사용

모든 사람들이 말하는 것보다 쉽습니다. 먼저 GVFS가 MTP 마운트를 마운트하면 아래에서 사용할 수 있습니다. 그래픽 파일 브라우저 (thunar / nautilus / etc)에서 전화기를 열어서이를 강제 실행할 수 있습니다.

/run/user/$UID/gvfs

들어가 하나의 mtp 장치가 있다고 가정하면 다음과 같이 작동합니다.

$ cd /run/user/$UID/gvfs/mtp*

파일을 전송할 위치를 찾은 다음 다시 동기화하십시오.

$ cd SanDisk\ SD\ card/Movies/

$ pwd # prints "/run/user/1000/gvfs/mtp:host=%5Busb%3A003%2C096%5D/SanDisk SD card/Movies"

$ rsync --verbose --progress --omit-dir-times --no-perms --recursive --inplace ~/Videos/ ./

재 동기화 옵션

  • --inplace: 어떤 mtp가 파일을 새로운 것으로 복사하고 이전 파일로 이름을 바꾸고 싶을지를 사용 하는 것이 좋습니다 --inplace. 파일을 SD 카드에 두 번 복사 할 수 있습니다. mtp 전송을 SD 카드로 한 번, MTP 드라이버가 (mv)를 지원하지 않을 수 있기 때문에 다시 한 번, 후드 아래에서 (cp / rm) 안전 할 수 있습니다 .
  • 에 대한 설명은 남자 rsync를 읽어 --verbose, --progress, --recursive하지만 그들은 꽤 자체 문서화이야.
  • --omit-dir-times --no-perms mtp는이를 지원하지 않기 때문에 필수입니다.

3
다음 옵션을 추가합니다 --omit-dir-times --no-perms --ignore-existing. Rsync가 MTP를 통해 디렉토리 타임 스탬프를 설정하지 못했습니다. "권한 없음"이 기본값이라고 확신하지만이를 지정하고 싶습니다. 기존 파일을 무시하면 중단 된 위치에서 파일을 선택할 수 있습니다.
Stephen Ostermiller

4
--ignore-existing? 중복성을 잃고 있습니다. 항상 --size-only체크섬이 아닌 디렉토리 목록에 대한 동기화를 줄일 수 있습니다. 나는 그것을 추가 할 --omit-dir-times것이고 --no-perms그것이 유용하게 들리기 때문에 결국에는 오류가 발생하는 것을 기억하는 것 같습니다.
Evan Carroll

Rsync는 MTP를 통해 타임 스탬프를 올바르게 설정하는 데 문제가 있으므로 --ignore-existing모든 파일을 동기화 하지 않습니다. 나는 당신의 --size-only제안을 좋아합니다 . 다음에 대신 시도하겠습니다.
Stephen Ostermiller

3
또한 목적지에 후행 슬래시를 사용하여 소스에서 별표를 사용할 필요가 없습니다.~/Videos/ ./
Stephen Ostermiller

또한 컴퓨터의 음악 폴더에서 이미 제거한 파일을 삭제하려면 '--delete-after'를 추가해야했습니다. 따라서 전체 명령은 다음과 같습니다. rsync --verbose --progress --omit-dir-times --no-perms --recursive --inplace --ignore-existing --delete-after / home / user / MUSIC /.
happyskeptic

39

sshelper 사용

이 솔루션을 찾았습니다.

  • 기기에 sshelper 를 설치합니다 (루트 된 기기가 필요하지 않으며 Google Play 마켓에서 사용 가능)
  • 내 WLAN에서 장치는 "android"라고합니다. 그러나 장치에 호스트 이름을 제공 할 수없는 경우 IP를 사용할 수 있습니다.

호스트 "android"의 기본 포트를 변경하려면 로컬 ssh-config를 편집하십시오.

.ssh/config
host android
    Port 2222
  • 장치에서 sshelper를 시작하십시오.
  • 당신의 WLAN에 안드로이드 장치를 연결합니다.

rsync -rvlc 음악 android : SDCardLink /

최신 정보 권한 및 타임 스탬프 설정이 작동하지 않으므로 많은 경고가 표시되므로 선호 -rvlc합니다 -a. 이 옵션을 -c사용하면 두 번째 동기화가 훨씬 빨라집니다.

권한 및 타임 스탬프 설정이 작동하지 않으므로 많은 경고가 표시되므로 선호 -rvl --size-only합니다 -a. 이 옵션을 --size-only사용하면 두 번째 동기화가 훨씬 빨라집니다.

불행히도 음악 앱이 새 파일을 볼 때까지 약간의 시간이 필요합니다. 장치를 다시 시작하면 도움이됩니다.


13
.ssh / config를 수정하지 않고 SSHelper와 함께 rsync를 사용하는 다른 방법 : rsync -avz -e 'ssh -p 2222' Music android:SDCardLink/( stackoverflow.com/a/4630407/399105 )
bmaupin

1
@guettli 음악 파일을 동기화하는 -c 체크섬 옵션은 무엇입니까? 이것은 상당히 느려질 수 있습니다
EdiD

5
rsync man의 @guettli : -c, --checksum. 이 옵션이 없으면 rsync는 기본적으로 각 파일의 크기와 마지막 수정 시간이 발신자와 수신자간에 일치하는지 확인하는 "빠른 검사"를 사용합니다. 이 옵션은 크기가 일치하는 각 파일의 128 비트 체크섬을 비교하도록이를 변경합니다. 체크섬을 생성하면 전송시 파일의 모든 데이터를 읽는 데 많은 양의 디스크 I / O가 소비되므로 속도가 크게 느려질 수 있습니다.
EdiD

4
@guettli 나는 그것이 --size-only가장 빠른 해결책이라고 생각합니다 . 그러나 그것은 그렇게 저장되지 않습니다-c
niels

2
USB 테 더링을 사용하여 전송 속도가 훨씬 빨라졌습니다. SSHelp를 실행하고 192.168.1.5매번 다를 수있는 IP 를 표시 한 후 다음 명령이 적용되었습니다 .rsync -avzhP --inplace --info=progress2 -e 'ssh -p 2222' 192.168.1.5:/storage/emulated/0/DCIM/Camera/ /home/username/path/to/pics/
Organic Addict

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.