mkdir -p /aa && tar -zcvf /aa/s.tar.gz s报mkdir权限不够,但是单独执行mkdir又可以。怎么改命令
时间: 2024-08-28 07:03:12 浏览: 22
在你提供的命令中,`mkdir -p /aa && tar -zcvf /aa/s.tar.gz s`,首先尝试创建目录`/aa`,如果目录不存在则创建它,并且目录创建后会继续执行后面的`tar`命令将目录`s`打包成`s.tar.gz`文件。当出现`mkdir权限不够`的错误信息时,这意味着当前用户没有权限在根目录`/`下创建目录。即使单独执行`mkdir`命令时看似可以成功,这可能是因为使用了相对路径,而相对路径是相对于当前用户的家目录而言的,而不是根目录。
要解决这个问题,你可以采取以下几种方法:
1. 使用超级用户权限来执行命令:
```bash
sudo mkdir -p /aa && sudo tar -zcvf /aa/s.tar.gz s
```
这将要求你输入密码,以便以超级用户权限执行这两个命令。
2. 选择一个你有权限创建目录的位置,而不是根目录`/`。例如,使用你的家目录:
```bash
mkdir -p ~/aa && tar -zcvf ~/aa/s.tar.gz s
```
这里使用了`~`来代表家目录路径。
3. 改变目录`s`的父目录到你有权限创建`aa`目录的路径。确保`s`目录存在,并且你有权限访问它。
选择合适的方法取决于你的具体需求和权限配置。如果你需要将文件打包到根目录的某个位置,请确保你有足够的权限,否则最好选择在一个有适当权限的目录下进行操作。
相关问题
为什么会这样[user_mongo@nosql01 replicaset]$ cd /opt [user_mongo@nosql01 opt]$ ll total 0 drwxr-xr-x. 3 root root 25 Mar 16 17:08 servers drwxr-xr-x. 2 root root 51 Mar 16 17:10 software [user_mongo@nosql01 opt]$ tar -zxvf /opt/software/mongodb-linux-x86_64-rhel70-4.4.12.tgz -C /opt/servers/mongodb_demo/replicaset/ mongodb-linux-x86_64-rhel70-4.4.12/LICENSE-Community.txt tar: mongodb-linux-x86_64-rhel70-4.4.12: Cannot mkdir: Permission denied tar: mongodb-linux-x86_64-rhel70-4.4.12/LICENSE-Community.txt: Cannot open: No such file or directory mongodb-linux-x86_64-rhel70-4.4.12/MPL-2 tar: mongodb-linux-x86_64-rhel70-4.4.12: Cannot mkdir: Permission denied tar: mongodb-linux-x86_64-rhel70-4.4.12/MPL-2: Cannot open: No such file or directory mongodb-linux-x86_64-rhel70-4.4.12/README tar: mongodb-linux-x86_64-rhel70-4.4.12: Cannot mkdir: Permission denied tar: mongodb-linux-x86_64-rhel70-4.4.12/README: Cannot open: No such file or directory mongodb-linux-x86_64-rhel70-4.4.12/THIRD-PARTY-NOTICES tar: mongodb-linux-x86_64-rhel70-4.4.12: Cannot mkdir: Permission denied tar: mongodb-linux-x86_64-rhel70-4.4.12/THIRD-PARTY-NOTICES: Cannot open: No such file or directory mongodb-linux-x86_64-rhel70-4.4.12/bin/install_compass tar: mongodb-linux-x86_64-rhel70-4.4.12: Cannot mkdir: Permission denied tar: mongodb-linux-x86_64-rhel70-4.4.12/bin/install_compass: Cannot open: No such file or directory mongodb-linux-x86_64-rhel70-4.4.12/bin/mongo tar: mongodb-linux-x86_64-rhel70-4.4.12: Cannot mkdir: Permission denied tar: mongodb-linux-x86_64-rhel70-4.4.12/bin/mongo: Cannot open: No such file or directory mongodb-linux-x86_64-rhel70-4.4.12/bin/mongod tar: mongodb-linux-x86_64-rhel70-4.4.12: Cannot mkdir: Permission denied tar: mongodb-linux-x86_64-rhel70-4.4.12/bin/mongod: Cannot open: No such file or directory mongodb-linux-x86_64-rhel70-4.4.12/bin/mongos tar: mongodb-linux-x86_64-rhel70-4.4.12: Cannot mkdir: Permission denied tar: mongodb-linux-x86_64-rhel70-4.4.12/bin/mongos: Cannot open: No such file or directory tar: Exiting with failure status due to previous errors [user_mongo@nosql01 opt]$ tar -zcvf /opt/software/mongodb-linux-x86_64-rhel70-4.4.12.tgz -C /opt/servers/mongodb_demo/replicaset/ tar: Cowardly refusing to create an empty archive Try `tar --help' or `tar --usage' for more information.
根据你提供的信息,出现这种情况可能是因为你没有足够的权限在目标文件夹中创建文件。可以尝试以下解决方法:
1.使用sudo命令运行tar命令,以管理员权限运行。例如:sudo tar -zxvf /opt/software/mongodb-linux-x86_64-rhel70-4.4.12.tgz -C /opt/servers/mongodb_demo/replicaset/
2.检查目标文件夹/opt/servers/mongodb_demo/replicaset/的权限是否正确,可以使用ls -l命令查看。如果权限不足,可以使用chmod命令更改目标文件夹的权限。例如:sudo chmod 755 /opt/servers/mongodb_demo/replicaset/
希望以上解决方法能够帮助到你。
#!bin/sh DIRNAME='ls /root | grep bak' if [ -z "$DIRNAME" ] then mkdir /root/bak;cd /root/bak fi YY='date +%y' ; MM='date +%m';DD='date +%d' BACKETC=$YY$MM$DD_etc.tar.gz tar zcvf $BACKETC /etc echo "fileback finished!" 说明每一步完成的功能
这段代码是一个简单的Shell脚本,用于备份/etc目录。
1. `DIRNAME='ls /root | grep bak'`:设置变量DIRNAME为执行命令`ls /root | grep bak`的结果。该命令的目的是检查/root目录下是否存在名为bak的文件夹。
2. `if [ -z "$DIRNAME" ]`:如果变量DIRNAME为空(即不存在名为bak的文件夹),则执行下面的代码块。
3. `mkdir /root/bak;cd /root/bak`:创建/root/bak文件夹,并进入该目录。
4. `YY='date +%y'; MM='date +%m';DD='date +%d'`:设置变量YY、MM、DD分别为执行命令`date +%y`、`date +%m`、`date +%d`的结果。这些命令用于获取当前的年、月、日。
5. `BACKETC=$YY$MM$DD_etc.tar.gz`:设置变量BACKETC为拼接字符串"$YY$MM$DD_etc.tar.gz"。这个字符串的格式是年月日_etc.tar.gz,用于作为备份文件的名称。
6. `tar zcvf $BACKETC /etc`:使用tar命令将/etc目录打包为一个压缩文件,文件名为变量BACKETC的值。
7. `echo "fileback finished!"`:输出字符串"fileback finished!",表示文件备份完成。
所以,这段脚本的功能是检查是否存在备份目录,如果不存在则创建目录,并将/etc目录打包为一个以日期命名的压缩文件。最后输出备份完成的提示信息。