document.write('<link rel="stylesheet" href="http://gist.github.com/stylesheets/gist/embed.css"/>')





document.write('<div id=\"gist-58114\" class=\"gist\">\n  \n  \n    \n            \n\n      <div class=\"gist-file\">\n        <div class=\"gist-data gist-syntax\">\n          \n          \n          \n            <div class=\"gist-highlight\"><pre><div class=\"line\" id=\"LC1\"><span class=\"c\">#!/bin/sh<\/span><\/div><div class=\"line\" id=\"LC2\"><span class=\"c\">#<\/span><\/div><div class=\"line\" id=\"LC3\"><span class=\"c\"># zfs snapshot auto-rotation<\/span><\/div><div class=\"line\" id=\"LC4\"><span class=\"c\">#<\/span><\/div><div class=\"line\" id=\"LC5\"><span class=\"c\">#     usage: zfs_snapshot.sh &lt;mountpoint&gt; &lt;snapshot name&gt; &lt;number of keeping snapshots&gt; [recursive]<\/span><\/div><div class=\"line\" id=\"LC6\"><span class=\"c\">#<\/span><\/div><div class=\"line\" id=\"LC7\"><span class=\"c\">#       recursive option: Recursively create snapshot (zfs snapshot -r)<\/span><\/div><div class=\"line\" id=\"LC8\"><span class=\"c\">#<\/span><\/div><div class=\"line\" id=\"LC9\"><span class=\"c\"># for crontab<\/span><\/div><div class=\"line\" id=\"LC10\"><span class=\"c\">#<\/span><\/div><div class=\"line\" id=\"LC11\"><span class=\"c\"># @daily   /root/bin/zfs_snapshot.sh tank days_later   7  recursive<\/span><\/div><div class=\"line\" id=\"LC12\"><span class=\"c\"># @weekly  /root/bin/zfs_snapshot.sh tank weeks_later  5  recursive<\/span><\/div><div class=\"line\" id=\"LC13\"><span class=\"c\"># @monthly /root/bin/zfs_snapshot.sh tank months_later 12 recursive<\/span><\/div><div class=\"line\" id=\"LC14\"><span class=\"c\"># @yearly  /root/bin/zfs_snapshot.sh tank years_later  10 recursive<\/span><\/div><div class=\"line\" id=\"LC15\">&nbsp;<\/div><div class=\"line\" id=\"LC16\">&nbsp;<\/div><div class=\"line\" id=\"LC17\"><span class=\"nv\">PATH<\/span><span class=\"o\">=<\/span>/sbin:<span class=\"nv\">$PATH<\/span><\/div><div class=\"line\" id=\"LC18\">&nbsp;<\/div><div class=\"line\" id=\"LC19\"><span class=\"nv\">mountpoint<\/span><span class=\"o\">=<\/span><span class=\"nv\">$1<\/span><\/div><div class=\"line\" id=\"LC20\"><span class=\"nv\">snapshot_name<\/span><span class=\"o\">=<\/span><span class=\"nv\">$2<\/span><\/div><div class=\"line\" id=\"LC21\"><span class=\"nv\">level<\/span><span class=\"o\">=<\/span><span class=\"nv\">$3<\/span><\/div><div class=\"line\" id=\"LC22\"><span class=\"nv\">option<\/span><span class=\"o\">=<\/span><span class=\"nv\">$4<\/span><\/div><div class=\"line\" id=\"LC23\">&nbsp;<\/div><div class=\"line\" id=\"LC24\"><span class=\"nv\">zfs_opt<\/span><span class=\"o\">=<\/span><\/div><div class=\"line\" id=\"LC25\"><span class=\"k\">if<\/span> <span class=\"o\">[<\/span> <span class=\"s2\">&quot;$option&quot;<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">&quot;recursive&quot;<\/span> <span class=\"o\">]<\/span>; <span class=\"k\">then<\/span><\/div><div class=\"line\" id=\"LC26\"><span class=\"k\">    <\/span><span class=\"nv\">zfs_opt<\/span><span class=\"o\">=<\/span>-r<\/div><div class=\"line\" id=\"LC27\"><span class=\"k\">fi<\/span><\/div><div class=\"line\" id=\"LC28\">&nbsp;<\/div><div class=\"line\" id=\"LC29\"><span class=\"c\">## destroy outdated snapshot<\/span><\/div><div class=\"line\" id=\"LC30\">zfs destroy <span class=\"nv\">$zfs_opt<\/span> <span class=\"s2\">&quot;$mountpoint@`expr $level - 1`$snapshot_name&quot;<\/span><\/div><div class=\"line\" id=\"LC31\">&nbsp;<\/div><div class=\"line\" id=\"LC32\"><span class=\"c\">## rolling snapshot<\/span><\/div><div class=\"line\" id=\"LC33\"><span class=\"nv\">j<\/span><span class=\"o\">=<\/span><span class=\"sb\">`<\/span>expr <span class=\"nv\">$level<\/span> - 2<span class=\"sb\">`<\/span><\/div><div class=\"line\" id=\"LC34\"><span class=\"k\">for <\/span>i in <span class=\"sb\">`<\/span>jot - <span class=\"nv\">$j<\/span> 0<span class=\"sb\">`<\/span>; <span class=\"k\">do<\/span><\/div><div class=\"line\" id=\"LC35\"><span class=\"k\">    <\/span><span class=\"nv\">i_plus1<\/span><span class=\"o\">=<\/span><span class=\"sb\">`<\/span>expr <span class=\"nv\">$i<\/span> + 1<span class=\"sb\">`<\/span><\/div><div class=\"line\" id=\"LC36\">&nbsp;&nbsp;&nbsp;&nbsp;zfs rename <span class=\"nv\">$zfs_opt<\/span> <span class=\"s2\">&quot;$mountpoint@$i$snapshot_name&quot;<\/span> <span class=\"s2\">&quot;$mountpoint@$i_plus1$snapshot_name&quot;<\/span><\/div><div class=\"line\" id=\"LC37\"><span class=\"k\">done<\/span><\/div><div class=\"line\" id=\"LC38\">&nbsp;<\/div><div class=\"line\" id=\"LC39\"><span class=\"c\">## take snapshot<\/span><\/div><div class=\"line\" id=\"LC40\">zfs snapshot <span class=\"nv\">$zfs_opt<\/span> <span class=\"s2\">&quot;$mountpoint@0$snapshot_name&quot;<\/span><\/div><div class=\"line\" id=\"LC41\">&nbsp;<\/div><\/pre><\/div>\n          \n        <\/div>\n\n        <div class=\"gist-meta\">\n          <a href=\"http://gist.github.com/raw/58114/a5b74312b4af6c0401c3b8173d1c7e05a213db7f/zfs_snapshot.sh\" style=\"float:right;\">view raw<\/a>\n          <a href=\"http://gist.github.com/58114#file_zfs_snapshot.sh\" style=\"float:right;margin-right:10px;color:#666\">zfs_snapshot.sh<\/a>\n          <a href=\"http://gist.github.com/58114\">This Gist<\/a> brought to you by <a href=\"http://github.com\">GitHub<\/a>.\n        <\/div>\n      <\/div>\n    \n  \n<\/div>\n')
