rm : .filename not removed : 디스크 할당량이 초과되었습니다.


3

이것은 내가 할 때 얻는 전체 파일 이름입니다. ls -lt 내 현재 디렉토리에서.

EXPORT_v1x0_20120811_11_T_065800_070000.dat.gz

파일 이름도 날짜로 구성됩니다. 위 파일에서 날짜는 20120811.

그래서 시작하는 모든 파일을 삭제하려고합니다. EXPORT_v1x0 날짜가 20120825.

명령 줄에서 아래의 스크립트를 사용하여 파일을 삭제합니다.

find . -name "EXPORT_v1x0*" | awk -F'_' '$3<20120825' | xargs rm

그러나 위의 명령을 사용하여 파일을 삭제할 때마다 항상 예외가 발생합니다.

rm: ./EXPORT_v1x0_20120811_11_T_065800_070000.dat.gz not removed: Disc quota exceeded

아무도이 예외가 무엇을 의미하는지 말해 줄 수 있습니까? 그리고이 문제를 극복하는 방법?

나는 달리고있다. SunOS.

bash-3.00$ uname -a
SunOS lvsaishdc3in0001 5.10 Generic_142901-02 i86pc i386 i86pc

아마 도움이 될 것입니다. 잘라 내지하다 먼저 파일과 함께 echo -n > EXPORT_v1x0_20120811_11_T_065800_070000.dat.gz.
— Anton Kovalenko

어떤 SunOS 버전을 사용하고 있습니까? 다음의 결과는 무엇입니까? quota -v?
— Keith Thompson

질문을 버전 이름으로 업데이트했습니다. 나는 달리고있다. 5.10 버전 이름을 정확하게 해석하면. 그리고 나는 노력했다. quota -v 그러나 그것은 말한다 quota: command not found. 왜?

@AntonKovalenko, 내가 어떻게 파일을 잘라야하는지 말해 줄 수 있어요? 나 한테도 말한대로 해봤 어. echo -n > EXPORT_v1x0_20120811_11_T_065800_070000.dat.gz. 다시 나는 같은 것을 얻었다. Disc Quota Exception as well

1
모든 파일들. ZFS의 '기능'으로, 파일을 만들기 전에 약간의 공간이 필요합니다.
— Petesh

답변:


4

너는 뭔가를 할 필요가있을거야. cat /dev/null > file (또는 echo > file ) 다시 rm을 사용할 수 있도록 할당량 아래로 돌아가십시오.


제안에 대해 Paul에게 감사드립니다. 이걸 추가해야한다면 /dev/null 내 명령에서 내 질문에 언급 한 다음 어떻게 수정해야합니까, 그래서 다시는이 예외가 나타나지 않을까요? 이견있는 사람?

너는 그것을 시도해야한다. 단일 파일 (바람직하게는 큰 파일)을 사용하여 할당량을 얻은 다음 find 과 rm 다시 일하기 시작할 수 있습니다. 모르겠다. 어쩌면 파일 삭제가 먼저 디렉토리를위한 블록을 할당하기를 원할 것이다. (예, 이상).
— Anton Kovalenko

안톤은 정확합니다. 하나의 파일을 자른 다음 전체 명령을 실행하여 모든 파일을 복구하는 것이 가장 좋습니다 (할당량에 도달하면 작업해야 함). 먼저 -size 플래그를 사용하여 찾기를 실행하고이를 사용하여 잘림 후보를 식별 할 수 있습니다.

3
내가 말한대로 파일 잘라내기를 시도했다. echo -n > EXPORT_v1x0_20120811_11_T_065800_070000.dat.gz. 다시 나는 같은 것을 얻었다. Disc Quota Exception as well.

2

할당량 아래로 이동할 때까지 찾은 가장 작은 파일을 수동으로 삭제하면 표준 방법으로 삭제할 수 있습니다.

@Volodymyr Savchenko의 대답이 왜 실패했는지 나는 모른다. 사실 그것은 나에게도 효과가있는 유일한 트릭이었습니다.

HPC에서 일하고 있는데 할당량이 부족합니다.

거의 모든 명령이 나이를 먹고 있었다.

- rsync --remove-source-files를 사용하여 원격으로 작동하지 않았습니다.

rsync -avz --remove-source-files -e "ssh -p ####" usr@host:path/file.dat ./
receiving file list ... done
rsync: sender failed to remove file.dat: Disk quota exceeded (122)

-rm 대부분의 파일이 작동하지 않았습니다.

[usr@server ~]$ rm  path/file.dat
rm: cannot remove 'path/file.dat': Disk quota exceeded

-하기

cat /dev/null path/file

분명히 작동하지만 rm'ing하지 않을 것입니다 (아직 할당량이 초과되면 오류 메시지가 표시됩니다) (나는 이해할 수 없습니다).

그럼에도 불구하고 '만졌을'뿐인 빈 파일 (예 : 크기가 매우 작은 빈 파일)을 삭제하면 할당량 아래로 이동하여 파일을 정상적으로 삭제할 수 있습니다.


0

파일을 삭제할 수있는 권한이 없거나 읽기 전용 일 수 있습니다. rm -f를 시도하십시오. 할당량 메시지는 디스크에 쓰려고하는 것에서옵니다.


unlink를 호출 할 때 디렉토리에 쓸 필요가 있다는 의미에서 실제로 디스크를 사용할 수 있습니다 - syscall rm이 사용합니다. 초과 할당량은 쓰기 액세스가 없음을 의미합니다.
— jim mcnamara

-1

나는 똑같은 문제가 있었는데, 보통 제안 된 해결책들 중 당신이 열거 한 해결책들 중 어느 것도 일하지 않았습니다.

그러나 가장 작은 파일을 삭제할 수 있음을 깨달았습니다. 1kb. 난 그냥 rm으로 큰 것들을 정리할 수 있도록 충분한 작은 파일을 찾아야했다.

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