glob 모드의 mv는 sudo 없이는 작동하지 않습니다.

glob 모드의 mv는 sudo 없이는 작동하지 않습니다.

나는 사용하고있다MySQL데이터베이스에우분투기계.

내 거MySQL데이터 디렉터리는 /var/lib/mysql/'라는 디렉터리가 있기 때문 입니다.데이터베이스 테스트db_test/", 그래서 아래에 라는 디렉터리 가 있습니다 /var/lib/mysql/. 모든 테이블 정보는 다음 위치에 있습니다./var/lib/mysql/db_test/

/var/lib/mysql# ls
db_test

/var/lib/mysql# cd db_test
/var/lib/mysql/db_test# ls
cars.frm
cars.MYD
cars.MYI
customers.frm
customers.MYD
...

제가 달성하고 싶은 것은 간단합니다. "라는 이름의 새 디렉토리를 생성하면 됩니다.지원", 그리고모든 파일을 다음으로 이동하세요. /var/lib/mysql/db_test//var/lib/mysql/backup/디렉토리 에 . 그래서 아래 명령을 실행하고 있습니다.내 홈 디렉토리의 하위 디렉토리:

~/tmp$ sudo mkdir /var/lib/mysql/backup
~/tmp$ sudo mv /var/lib/mysql/db_test/* /var/lib/mysql/backup

첫 번째 mkdir명령이 성공적으로 실행되고 아래에 "backup/"이라는 새 디렉터리가 생성됩니다./var/lib/mysql/

그러나 두 번째 명령은 실패했습니다., 다음 오류 메시지가 나타납니다.

mv: cannot stat `/var/lib/mysql/db_test/*': No such file or directory

왜? ? 내 db_test/디렉토리 에 테이블 파일이 많은데 /var/lib/mysql/오류 메시지가 나타나는 이유는 무엇입니까?

폴리스티렌 루트 사용자만 액세스할 수 있다는 것을 알고 있습니다 /var/lib/mysql/. 이것이 이유입니까? (하지만 저는 사용했어요 sudo) 잘 모르겠어요... 그리고 어떻게 없애나요?

답변1

$ sudo mv /var/lib/mysql/db_test/* /var/lib/mysql/backup

이것을 입력하면 사용자의 쉘이 확장을 시도합니다 /var/lib/mysql/db_test/*. 사용자에게 디렉토리에 대한 액세스 권한이 없으면 실패하며 대체가 이루어지지 않습니다.

따라서 mv명령 실행은 다음과 같습니다 sudo./var/lib/mysql/db_test/*단어파일 이름. 해당 이름의 파일이 존재하지 않습니다.

다음을 사용해 보세요:

$ sudo sh -c 'mv /var/lib/mysql/db_test/* /var/lib/mysql/backup'

하지만 넌 그래야 해진짜,진짜데이터베이스 백업을 위해 데이터베이스 도구 사용을 고려해보세요.

답변2

이는 MySQL 데이터베이스가 백업되는 방식이 아닙니다. 대신 mysqldump다음과 같이 사용해야 합니다 .

mysqldump -u root -p db_test > ~/backup/db_test.sql

/var/lib/mysql디렉터리 내에 백업 디렉터리를 만들지 말고 다른 곳에 두십시오. 위의 예에서 db_test를 root데이터베이스 사용자 이름으로 바꾸고 db_test를 데이터베이스 이름으로 바꿉니다. 로컬 계정이 아닌 데이터베이스 사용자의 비밀번호인 비밀번호를 입력하라는 메시지가 표시됩니다. 이 작업이 모두 완료되면 ~/backup/db_test.sql에 전체 백업이 포함됩니다. 백업을 복원하려면

mysql -u root -p db_test < ~/backup/db_test.sql

그러면 백업이 MySQL로 가져옵니다. 위의 이름을 해당 값으로 다시 바꿉니다.

관련 정보