diff --git a/examples/tmux_backup.sh b/examples/tmux_backup.sh deleted file mode 100644 index bc0bf370..00000000 --- a/examples/tmux_backup.sh +++ /dev/null @@ -1,81 +0,0 @@ -#!/bin/bash -# -# By Victor Orlikowski. Public domain. -# -# This script maintains snapshots of each pane's -# history buffer, for each tmux session you are running. -# -# It is intended to be run by cron, on whatever interval works -# for you. - -# Maximum number of snapshots to keep. -max_backups=12 -# Names of sessions you may wish to exclude from snapshotting, -# space separated. -ignore_sessions="" -# The directory into which you want your snapshots placed. -# The default is probably "good enough." -backup_dir=~/.tmux_backup/snapshot - -######################################################################## - -# Rotate previous backups. -i=${max_backups} -while [[ ${i} != 0 ]] ; do -if [ -d ${backup_dir}.${i} ] ; then - if [[ ${i} = ${max_backups} ]] ; then - rm -r ${backup_dir}.${i} - else - mv ${backup_dir}.${i} ${backup_dir}.$((${i}+1)) - fi -fi -i=$((${i}-1)) -done - -if [ -d ${backup_dir} ] ; then - mv ${backup_dir} ${backup_dir}.1 -fi - -## Dump hardcopy from all windows in all available tmux sessions. -unset TMUX -for session in $(tmux list-sessions | cut -d' ' -f1 | sed -e 's/:$//') ; do - for ignore_session in ${ignore_sessions} ; do - if [ ${session} = ${ignore_session} ] ; then - continue 2 - fi - done - - # Session name can contain the colon character (":"). - # This can screw up addressing of windows within tmux, since - # target windows are specified as target-session:target-window. - # - # We use uuidgen to create a "safe" temporary session name, - # which we then use to create a "detached" session that "links" - # to the "real" session that we want to back up. - tmpsession=$(uuidgen) - tmux new-session -d -s "$tmpsession" -t "$session" - HISTSIZE=$(tmux show-options -g -t "$tmpsession" | grep "history-limit" | awk '{print $2}') - for win in $(tmux list-windows -t "$tmpsession" | grep -v "^\s" | cut -d' ' -f1 | sed -e 's/:$//'); do - session_dir=$(echo "$session" | sed -e 's/ /_/g' | sed -e 's%/%|%g') - win_spec="$tmpsession":"$win" - - if [ ! -d ${backup_dir}/${session_dir}/${win} ] ; then - mkdir -p ${backup_dir}/${session_dir}/${win} - fi - - for pane in $(tmux list-panes -t "$win_spec" | cut -d' ' -f1 | sed -e 's/:$//'); do - pane_path=${backup_dir}/${session_dir}/${win}/${pane} - pane_spec="$win_spec"."$pane" - - tmux capture-pane -t "$pane_spec" -S -${HISTSIZE} - tmux save-buffer ${pane_path} - - if [ ! -s ${pane_path} ] ; then - sleep 1 - rm ${pane_path} - fi - done - done - tmux kill-session -t "$tmpsession" - -done