이 안내서의 목표
로컬 통합 문서를 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: queued와 data.transfer_id가 반환될 수 있습니다. 이 ID를 TRANSFER_ID로 저장하세요. 접수는 완료가 아닙니다.
rdp-cli files status --session SESSION --transfer-id TRANSFER_ID
상태 응답에서 data.state를 읽고 data.bytes_transferred와 data.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 사례는 같은 업로드→원격 편집→다운로드 흐름을 사용합니다. 실제로 저장한 보고서, 원본 스크린샷, 수식과 검증된 합계를 제공합니다. 다른 환경에 적용하기 전에 파일 기능과 프로토콜 제한을 확인하세요.