SCP를 사용하여 원격 서버에 파일을 업로드하고 있지만 그렇게하기 전에 파일이 존재하는지 확인하는 적절한 방법은 무엇입니까?Ruby 및 SCP/SSH를 사용하여 사본을 업로드하기 전에 파일이 있는지 확인하는 방법
2
A
답변
2
체크인 후 업로드를주의 :이 원자하지 않고 경쟁 조건 (또는 TOCTOU 취약점)가 발생할 수 있습니다.
더 나은 방법은 업로드 된 파일에 쓰기 권한이 없도록 (예 : UNIX 계열 시스템에서 400 또는 444 또는 유사한 방식으로) 파일 권한을 설정하는 것일 수 있습니다. 그러면 이후의 동일한 파일 이름으로의 업로드가 실패하게됩니다. (약간의 해석이있을 수 있습니다 (예 : 업로드 디렉토리 권한이 변경 되었습니까?).이 방법의 단점 중 하나입니다.
원격 파일에 대한 사용 권한을 어떻게 설정합니까? 가장 간단한 방법은 로컬 파일에 설정 한 다음 업로드 할 때 파일을 보존하는 것입니다. Ruby의 Net :: SCP README은 실제로 "전송을 가로 질러 파일 속성을 보존"할 수 있다고 말합니다.
9
scp에서는이 작업을 수행 할 수 없습니다. 당신이 sftp. 함께 할 수 그러나 그것은 다음과 같이 보일 것입니다 :
require 'net/sftp'
remote_path = "/path/to/remote/file"
Net::SFTP.start('host', 'username', :password => 'password') do |sftp|
sftp.stat!(remote_path) do |response|
unless response.ok?
sftp.upload!("/path/to/local/file", remote_path)
end
end
-1
이 질문은 확실히 해결되며 추가 정보도 제공합니다. http://ruby.about.com/od/ssh/ss/netscp.htm
관련 문제
- 1. 업로드하기 전에 파일 크기를 확인하는 다른 방법
- 2. fileupload 컨트롤에 업로드하기 전에 파일이 열려 있는지 확인하십시오.
- 3. 파일이 열려 있는지 확인하는 방법
- 4. 업로드하기 전에 파일 크기를 확인하는 방법은 무엇입니까?
- 5. 파일이 메이크 파일에 있는지 확인하는 방법
- 6. 연꽃 수식에 파일이 있는지 확인하는 방법?
- 7. 폴더 또는 파일이 숨겨져 있는지 확인하는 방법 =
- 8. 파일이 Azure Blob에 저장되어 있는지 확인하는 방법
- 9. 파일이 이미 COBOL에서 열려 있는지 확인하는 방법?
- 10. PHP : 파일이 현재 쓰여지고 있는지 확인하는 방법
- 11. 파일이 아직 쓰여지고 있는지 확인하는 방법?
- 12. VB 스크립트에 파일이 있는지 확인하는 방법
- 13. Ruby : 문자열에 여러 항목이 있는지 확인하는 방법?
- 14. .htaccess 파일이 filezilla에서 사라 집니까? 파일이 있는지 여부를 확인하는 방법?
- 15. 업로드하기 전에 비디오를 저장해야합니다.
- 16. 특정 URL에 파일이 있는지 확인하는 방법은 무엇입니까?
- 17. TSQL에 .txt 파일이 있는지 확인하는 방법은 무엇입니까?
- 18. Internet Explorer에서 업로드하기 전에 파일 크기를 확인하는 자바 스크립트
- 19. 파일이 있는지 확인하는 동안 오류가 발생했습니다.
- 20. VB.NET을 사용하여 특정 Excel 파일이 열려 있는지 확인하는 방법은 무엇입니까?
- 21. TextView가 있는지 확인하는 방법
- 22. 파일이 자바 스크립트에 있는지 확인하는 방법은 무엇입니까?
- 23. 설정하기 전에 이미지가 있는지 확인하는 방법은 무엇입니까?
- 24. 업로드하기 전에 파일 소품 확인하기
- 25. 업로드하기 전에 파일을 압축하여 http :
- 26. 창이 있는지 확인하는 방법
- 27. PHP에 확장명이없는 파일이 있는지 확인하는 방법은 무엇입니까?
- 28. FTP 서버에 파일이 있는지 확인하는 방법은 무엇입니까?
- 29. C#/.NET에 파일이 있는지 확인하는 방법은 무엇입니까?
- 30. libcurl을 사용하여 SFTP 사이트에 파일이 있는지 확인
'sftp.stat! (...)'줄은'remote_path'가 존재하지 않으면 예외를 발생시킵니다. 'sftp.stat (...)'이라고 써야합니다. – Karl