将快照包移动到另一个位置/目录


13

我想将已安装的快照软件包移动到主目录。Snap软件包比.deb软件包要大一些,因此它们会占用我的根分区中的空间。我知道软件包位于其中,/var/lib/snapd/snaps并且正在将软件包安装到/snap/app_dir。我尝试过模拟链接,但是没有用。

Answers:


14

更改快照安装目录

这是许多人要求的常见问题。快照开发人员似乎不打算很快解决它,因此提出了一些解决方案。

社区强烈拒绝但我没有尝试的第一个解决方案是使用符号链接来链接导致快照的目录。这种方法似乎不起作用,因为社区答复说apparmom不适用于符号链接。

第二种解决方案mount --bind该目录/val/lib/snapd/snaps对我来说可以很好地与已安装的应用程序一起使用,但是由于将目录移动到另一个分区而无法安装新的应用程序。这给了我关于将快照应用程序与位于中的缓存目录进行硬链接的错误/var/lib/snapd/cache。我不知道该位置是否在同一分区中是否可以解决此问题;但这就是为什么我要移动快照目录以将某些空间从分区释放到另一个目录的原因。

第三个可行的选择是将/var/lib/snapd目录作为一个整体,然后mount --bind从另一个位置移动到该目录,这对我有用,这是步骤。

仅需注意一点,您已经知道,在完成以下步骤的rsync之后,您可以将内部数据备份/var/lib/snapd到另一个位置,直到成功完成整个过程为止,然后,如果要释放更多空间,则可以删除备份数据。

##############################################################################
# Take Care this section may break the System !!!
##############################################################################
##Move snap folder to Home instead of root.
#Create the directory : you can change the location
mkdir /home/$USER/snap/snapd

#Copy the data
sudo rsync -avzP /var/lib/snapd/  /home/$USER/snap/snapd/

#Do backups
sudo mv /var/lib/snapd /var/lib/snapd.bak
sudo cp /etc/fstab /etc/fstab.bak

#Change fstab (Change $USER with your name or change the path totally)
echo "/home/$USER/snap/snapd /var/lib/snapd none bind 0 0" | sudo tee -a /etc/fstab

#remount fstab Or reboot.
sudo mkdir /var/lib/snapd
sudo mount -a

if ls  /var/lib/snapd/ | grep snaps
then
    echo "Re-mounting snapd folder is done successfully. !!!!"
    sudo rm -rf /var/lib/snapd.bak
else
    echo "WARNING : Re-mounting snapd folder failed, please revert !!!!! "
    echo "WARNING : Re-mounting snapd folder failed, please revert !!!!! "
    echo "WARNING : Re-mounting snapd folder failed, please revert !!!!! "
    echo "WARNING : Re-mounting snapd folder failed, please revert !!!!! "
    echo "WARNING : Re-mounting snapd folder failed, please revert !!!!! "

    # Trying to revert automatically
    sudo cp /etc/fstab.bak /etc/fstab

    sudo mount -a
    sudo umount /var/lib/snapd

    sudo mv /var/lib/snapd.bak /var/lib/snapd

    echo "Files located at ~/snap/snapd should be removed, but it keeped for
    recovery until you ,manually, reboot the system and make sure the service
    is running correctly then manually you can remove that folder ~/snap/snapd
    !!!!!!!!!!!!!!, you should do that manually."

fi
##############################################################################
# Take Care the pervious section may break the System !!!
##############################################################################

参考文献

  1. 某些快照问题的自定义磁盘位置
  2. 询问ubuntu问题(不是最佳解决方案)链接
  3. 建议,使用绑定安装,而不是符号链接的移动卡目录链接
  4. 绑定安装和符号链接之间的区别链接
  5. 使绑定挂载永久

1
对我来说很棒。谢谢!我只需要(重新)移动它为.bak之后创建的/ var / lib中/ snapd目录mount -a来工作
萨利姆

@Salim,您是对的,我错过了将要添加到脚本中的这一步骤
Muhammad Yusuf

11

我终于找到了办法。

  • 首先将按扣包装移到所需位置。让我们snap_app.snap为你想移动的应用程序。将软件包从/var/lib/snapd/snaps/snap_app.snap移至~/snaps/snap_app.snap
  • 然后,您必须更改挂载选项/etc/systemd/system/snap-snap_app-90.mount,文件名中的数字可能有所不同。它What=/snap_app_loaction在下有指令[Mount]。将其更改为新的快照包位置。
  • 最后,您必须将snap软件包符号链接到/var/lib/snapd/snaps/
    例如: ln -s ~/snaps/snap_app.snap /var/lib/snapd/snaps/snap_app.snap

Snap软件包最初安装在/snap/snap_app目录中。您可以使用进行检查mount。重新启动计算机,一切就完成了。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.