sftp chmod 재귀 적


1

터미널을 통해 sftp를 통해 서버에 로그인했습니다.

명령을 실행할 때

chmod -R 755 ./*

오류가 발생했습니다. You must supply a numeric argument to the chmod command.. sftp에서 재귀 chmod 755를 적용하려면 어떻게해야합니까?


예 - 그게 내 질문에 쓴거야.
John

1
chmod 755 -R ./* 이런 식으로?
poz2k4444

@ 존 : 나는 어제 내 대답을 편집, 당신이 찾고 있던 것을 발견했다고 생각하고, 그것을 한눈에 ...
jaume

답변:


1

당신은 못할 수도 있습니다. FTP 또는 SFTP를 통해 사용 가능한 chmod가 재귀 옵션을 지원하지 않을 가능성이 있습니다. FTP / SFTP에서 사용할 수있는 명령은 쉘 아래에서 로컬로 사용할 수있는 기능이 다소 제한적입니다. 운이 좋으면 chmod가 -R 옵션을 사용하지만 불행한 경우 나무를 가로 지르며 각 레벨을 한 번에 하나씩 chmoding해야합니다.


또는 그것을 대신하는 스크립트를 작성하십시오.
Rob

물론 스크립트를 작성할 수는 있지만 스크립트는 리모컨의 결과를 구문 분석합니다. ls 한 번에 한 레벨 씩 사용하고 서브 디렉토리 목록을 작성한 다음 재귀 적으로 사용하십시오. 그것이 가능할뿐만 아니라 원격 FTP 사이트를 관리해야 할 때 스스로 해냈습니다. 그러나 그것은 상당한 양의 일입니다.
Nicole Hamilton

3

에서 man sftp:

chmod mode path

파일 경로의 권한을 모드로 변경하십시오. 경로는   glob (3) 문자를 포함하고 여러 파일과 일치 할 수 있습니다.

man 7 glob ( man 3 glob glob (7) 참조)는 *,? 및 [] 와일드 카드 패턴을 사용할 때 익숙합니다. ls. 그래서 당신은 사용할 수 있습니다 :

chmod 755 ./*
chmod 755 ./*/*
chmod 755 ./*/*/*

모든 파일에 도달 할 때까지 반복적으로 오류가 발생합니다.

Couldn't setstat on "./*/*/*": No such file or directory

이러한 대량 변경 작업을 수행하기 전에 어떤 디렉토리가 영향을 받을지 사전에 다시 확인할 수 있습니다. lls (에서 man sftp ) :

lls [ls-options [path]]

경로 또는 현재 디렉토리의 로컬 디렉토리 목록 표시 if   경로가 지정되지 않았습니다. ls-options는에 의해 지원되는 플래그를 포함 할 수 있습니다.   로컬 시스템의 ls (1) 명령. 경로에는 glob (3) 문자가 포함될 수 있습니다.   여러 파일과 일치 할 수 있습니다.

이렇게 (절대 경로 지정 lls 놀라움을 피하기 위해) :

lls -Rla /path

당신은 또한 사용할 수 있습니다 lls -Rla /path 당신의 chmod 예상대로 일했다.


1
다중 레벨 와일드 카드는 서버에 따라 지원되거나 지원되지 않을 수 있습니다. 그러나 그것이 전혀 작동한다면, 당신 말이 맞습니다. 이것이 좋은 방법입니다.
Nicole Hamilton

1

위의 Nicole의 설명에 따라 재귀가 지원되지 않는 서버에서 작업하고있었습니다. 와일드 카드 chmod가 작동했지만 정신 나간 폴더 구조를 실행하려고 시간을 초과했습니다.

결국 나를위한 트릭은 실제로 Filezilla였습니다 - 터미널을 통해 재귀 적으로 chmod를 할 수는 없지만 Filezilla는 GUI를 통해 어떻게 든 할 수있었습니다.

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