Bash:从/ home /备份所有用户并将其放入username.tar.gz

时间:2014-10-08 06:56:09

标签: bash backup

我希望从/ home /备份所有用户,并为每个用户创建username.tar.gz。如何从/ home / for Bash获取用户列表?

5 个答案:

答案 0 :(得分:1)

这应该让你开始:

#!/bin/bash

while IFS=: read  user _ uid gid _ home _ ; do
    [[ $home = /home/* && -d $home ]] || continue
    echo "User $user ($uid:$gid) has a home directory: $home"
done < /etc/passwd

答案 1 :(得分:0)

#!/bin/bash
USERS = `ls /home | xargs -r`
for user in  $USERS; do
    tar -czf /home/$user.tar.gz /home/$user
done 

答案 2 :(得分:0)

for file in /home*
do
tar -cvzf $file.tar.gz $file
done

for循环可以扩展通配符*以默认列出pwd中的所有文件。由于此处为/home/*,因此会展开/home/目标中的所有文件和文件夹。因此,对于每次迭代,file将在/home/

中包含不同的文件

答案 3 :(得分:0)

for each in `ls -d /home/*`
do
  # check whether the directory is present in /etc/passwd
  if grep -q $each /etc/passwd
  then
    tar -czf ${each}.tar.gz ${each}
  fi
done

此代码获取/home目录中的每个条目,并检查/etc/passwd文件中是否存在该条目。进行此检查是为了防止除用户主目录之外的其他文件和目录被标记。

答案 4 :(得分:0)

也许/ home下的某些文件夹不属于用户,或者用户的主目录没有用其用户名命名。

所以我认为您最好使用cat /etc/passwd | grep "/home" | awk -F: '{print $1}'来获得在/ home中拥有主目录的用户,并使用cat /etc/passwd | grep "/home" | awk -F: '{print $6}'来吸引用户&#39;家庭主持人。