Ubuntu Linux 解決 cp 指令 cannot stat no such file or directory 問題

阿舍之前在用 cp 指令的时候,遇到出现“cp: cannot stat ‘xxxxxx’: No such file or directory”讯息的情形,通常来说,如果不是阿舍打错字就是真的没有这个档案,所以,阿舍就不会太理会这个错误讯息哩 ! ... 可是,如果没有打错字,而且,档案也真的存在,还是遇到这个错误讯息的时候,那要怎么办哩 ?


阿舍要把 /var/log/nginx 资料夹下的所有的 access 日志档复制到别的资料做处理,因此,阿舍就用下面这一行指令来复制档案,结果,就出现 cannot stat 的问题,一开始,阿舍一度以为是 cp 指令不能用 access* 的方式复制档案哩 !

$ sudo cp /var/log/nginx/access* ./
cp: cannot stat ‘/var/log/nginx/access*’: No such file or directory
但是,阿舍用同样的方式,就是档名加星号的方式来复制别的资料夹的指定档名的档案,都没有这个问题,于是,阿舍就切到 /var/log/nginx 资料夹来看看,就发现这个资料夹的档案的拥有者是 www-data 及 adm 群组,而且,只有拥有者有读写权限,群组只有读的权限,其他人则是完全没有权限哩 !



$ sudo ls -l /var/log/nginx
total 14768
-rw-r----- 1 www-data adm 5704708 Feb 28 05:51 access.log
-rw-r----- 1 www-data adm 3789101 Feb 22 06:35 access.log.1
-rw-r----- 1 www-data adm 506444 Feb 16 06:46 access.log.2.gz
阿舍查了一下 cp 指令会出现 cannot sate 的原因,一般来说,除了真的没有档案之外,最有可能的原因就是路径和权限的问题,在某些情况下,在使用 cp 指令时,使用相对路径或是 ~ 路径来指定档案会让 shell 程式找不到档案,因此,改用绝对路径就可以解决。

正常情况,cp 指令应该是可以执行这几种复制的 ...

另外一个权限问题就更容易明白了,因为权限的问题造成 shell 程式根本就 "看不到" 那个档案,因此,就当然会出现 No such file or directory 哩 ! 而阿舍遇到的,就是这个情形,因此,阿舍就调一下使用者的权限,就解决这个问题了哩 !

所以,如果有幸在档案都存在的情况下还遇到这个 cannot stat No such file or directory 讯息的话,就可以改用绝对路径或检查一下档案的权限设定看看啰 ! ... 供参啰 ! ...


共享: