이 안내서의 목표

로컬 통합 문서를 RDP 세션으로 보내고 수정 없이 다시 받아 전송 상태와 SHA-256을 확인합니다. 같은 흐름으로 원격 앱이 저장한 결과물도 가져올 수 있습니다. 이 절차는 rdp-cli 0.1.0 명령 인터페이스와 2026년 9월 21일에 검증한 파일 작업을 바탕으로 정리한 재현 안내이며, 이번에 새로 실행한 테스트를 뜻하지 않습니다.

세션과 예제 파일 준비

실행할 컴퓨터에 맞는 버전을 다운로드한 뒤 빠른 시작에 따라 허가된 Windows RDP 서버에 연결합니다. 반환된 data.session을 저장하고 아래의 SESSION을 바꾸세요. 서버가 드라이브 리디렉션을 허용하고 호출자에게 파일 권한이 있어야 합니다. VNC는 이 교환 드라이브를 제공하지 않습니다.

각 세션에는 전용 교환 디렉터리가 있습니다. --path는 이 디렉터리 기준의 상대 경로이며 C:\Users\... 같은 임의의 Windows 디스크 경로가 아닙니다. 원격 앱에서는 리디렉션된 드라이브로 접근합니다. CLI 파일 작업에는 뷰어를 열거나 원격 키보드와 마우스 제어권을 가져올 필요가 없습니다.

예제 통합 문서를 현재 로컬 디렉터리에 service-activity.xlsx로 저장합니다. 크기는 4,489바이트이며 12개월의 가상 서비스 데이터가 들어 있습니다. 예제는 PATH에 있는 rdp-cli를 사용합니다. Windows에서는 EXE 폴더에서 .\rdp-cli.exe로 바꾸고, Linux에서는 설치한 명령 또는 ./rdp-cli-linux-x86_64 / ./rdp-cli-linux-arm64를 사용하세요.

rdp-cli status --session SESSION
rdp-cli files list --session SESSION

연결 상태, 협상된 기능, 목록 응답을 확인합니다. 파일 기능을 사용할 수 없으면 먼저 서버 정책이나 접근 권한을 확인하세요.

업로드하고 완료 기다리기

rdp-cli files upload --session SESSION --local ./service-activity.xlsx --path service-activity.xlsx

요청이 접수되면 data.state: queueddata.transfer_id가 반환될 수 있습니다. 이 ID를 TRANSFER_ID로 저장하세요. 접수는 완료가 아닙니다.

rdp-cli files status --session SESSION --transfer-id TRANSFER_ID

상태 응답에서 data.state를 읽고 data.bytes_transferreddata.total_bytes를 비교하며, 완료된 파일의 해시는 data.files[].sha256에서 확인합니다.

최종 상태가 나올 때까지 조회합니다. completed, 예상 크기 4,489바이트, 파일 해시를 확인한 뒤 진행하세요. 그러면 원격 앱이 세션의 리디렉션된 드라이브에서 문서를 열 수 있습니다. 파일 이름이 보인다는 사실만으로 완료를 판단하지 마세요.

내려받은 바이트 확인

첫 번째 왕복 전송에서는 문서를 수정하지 않습니다.

rdp-cli files download --session SESSION --path service-activity.xlsx --local ./service-activity-returned.xlsx

다운로드는 별도의 data.transfer_id를 반환합니다. 새 ID로 위의 files status를 실행합니다. completed 이후 로컬 결과는 service-activity-returned.xlsx입니다. macOS에서는 다음 명령으로 비교합니다.

shasum -a 256 ./service-activity.xlsx ./service-activity-returned.xlsx

Linux:

sha256sum ./service-activity.xlsx ./service-activity-returned.xlsx

Windows PowerShell:

Get-FileHash -Algorithm SHA256 .\service-activity.xlsx, .\service-activity-returned.xlsx

두 해시는 모두 1869e5708fe8922a99ff3efee1c0d285df3dd94588d59f5ad48f282db915df51이어야 합니다. 원격에서 문서를 편집했다면 원본과 같을 것으로 기대하면 안 됩니다. 결과물을 교환 드라이브에 저장하고 해당 경로를 내려받아 실제 내용을 검증하세요.

폴더 전체 전송

보낼 파일을 로컬 source-folder 디렉터리에 준비합니다.

rdp-cli files upload --session SESSION --local ./source-folder --path source-folder

이 업로드가 완료된 뒤 내려받습니다.

rdp-cli files download --session SESSION --path source-folder --local ./received-folder

각 전송을 따로 조회하세요. 빈 디렉터리와 폴더 구조가 유지되며 ./received-folder는 정확한 대상 루트입니다. 디렉터리 전송은 파일별로 완료되므로 partial 상태나 취소 후에도 완료된 파일이 남을 수 있습니다. 전체 트리가 하나의 원자적 작업으로 처리되지는 않습니다.

결과가 불명확한 전송 복구

  • 대상이 이미 있음: 다른 경로를 선택하거나, 교체하려는 의도가 분명한 경우에만 --overwrite를 추가합니다. 기본값은 덮어쓰지 않습니다.
  • FILE_BUSY: 원격 앱의 저장 또는 내보내기가 끝나도록 하고, 파일과 전송 상태를 살핀 뒤 재시도합니다.
  • 시작 응답을 받지 못함: rdp-cli files status --session SESSION으로 알려진 전송을 확인합니다. 결과를 모르는 업로드나 덮어쓰기를 즉시 반복하지 마세요.
  • failed, partial, cancelled: 파일별 결과와 원인을 살펴봅니다. 완료된 파일은 남을 수 있습니다. 연결 해제나 파일 권한 상실로 전송이 멈출 수 있으며 새 연결이 자동으로 이어서 수행하지는 않습니다.
  • 잘못된 경로: 슬래시로 구분한 교환 드라이브 상대 경로를 사용합니다. 절대 경로, .., 안전하지 않은 링크, 충돌하는 이름은 거부됩니다.

알고 있는 전송을 중지하려면 실제 ID를 사용하고 이후 상태를 확인합니다.

rdp-cli files cancel --session SESSION --transfer-id TRANSFER_ID

데스크톱 입력을 일시 중지해도 파일 전송은 취소되지 않습니다. completed는 바이트 복사가 끝났음을 뜻하며 원격 앱이 올바른 보고서를 만들었다는 증거는 아닙니다.

검증된 원격 결과물로 이어가기

LibreOffice Calc 사례는 같은 업로드→원격 편집→다운로드 흐름을 사용합니다. 실제로 저장한 보고서, 원본 스크린샷, 수식과 검증된 합계를 제공합니다. 다른 환경에 적용하기 전에 파일 기능과 프로토콜 제한을 확인하세요.