Saturday, April 12, 2014

Configuring Apple Time Machine backup on Windows / RASPBMC

 

This part 1 of the post will deal with the configuration of the time machine backup on windows 7 machine.

Steps involved -

1. Create image file on MAC OSX 10 + i.e. Maverick

Disk Utility -> New Image -> Save As: <filename> -> Mac OS Extended (Journaled) -> Image Format -> Sparse bundle disk image

I named it as TM

2. Then unmount the sparse bundle: by right click on the desktop or command

umount <path-to-sparse-bundle>



3. Now we will go the the Windows Machine and create a folder. I created a temp folder on Windows machine C Drive.


4. Connect the folder on MAC by right click on the finder and provided the IP followed by user name and password.


5. On MAC -Once the system is connected, i navigated to the temp folder and dragged it to the favourites for easy navigation.


6. Copied the TM sparse bundle file to temp folder


7. Then resize the file created in step 1.


hdiutil resize -size 100G /Volumes/users/multimedia/temp/TM.sparsebundle



NOTE: The resizing will not affect the actual size of the file as of now. It will only tell how much file can be expanded. In other words how large backup can be taken. For me i have a estimated backup of 40 GB so i configured the file as as 100 GB.


8. Now double click on the TM sparse bundle file from temp folder so that it gets mounted.


9. Once mounted i renamed it TM which was originally mounted as New Volume


10. Now I have a new path to take the backup i.e.


/Volumes/TM


11. Configure the backup on Time Machine on this new volume via below command.


sudo tmutil setdestination /Volumes/TM

Supply the password when asked for and done. Go to the Time Machine icon on top bar and choose backup now.


When you start Time Machine, it will create a Backups directory within the sparse bundle for your backups.


12. Add the sparse bundle to login item so that it gets connected automatically next time i login backup runs smoothly.


system preferences –> Users & Groups –> on the account you will login –> login item tab –> Click on small “+” to add the TM.sparsebundle file from the temp folder under favourite folders.  


For me it is working like a breeze.


Next time we will HACK raspberry pi for this.


-Cheerz

Thursday, February 6, 2014

Place a counter on video–Adobe After Affect

After affect is there to amaze me again. I had to host a video which keep on running for a day or two in loop. Since the video was a multicast (and not video on demand), it was like a TV show, which keeps on running and anyone who logs in will watch the show from that moment and not the beginning.

I wanted to let the viewer know that amount of time left in the video so that he can wait for the next loop to start. AE comes to the rescue.

I used a wonderful script written by Dan 

Steps involved -

1. Open a new composition

2. Add the video

3. Add a text layer

4. On source text add the below code. Update line 2 as per the timer requirements. Its actually number of seconds.

image

 

 

Code ---

rate = -1;
clockStart = 300;

function padZero(n){
if (n < 10) return "0" + n else return "" + n
}
clockTime = Math.max(clockStart + rate*(time - inPoint),0);
t = Math.floor(clockTime);
min = Math.floor((t%3600)/60);
sec = Math.floor(t%60);
min + ":" + padZero(sec)

Saturday, January 4, 2014

Pushbullet notifications from uTorrent

 

These steps can be used with any torrent client on windows which support post download “run program”

Download the latest package from here - http://dan-l.net/2013/02/12/pushbullet-desktop-application/

Source code of the application is given here

Then run pushbullet.exe and activate it by supplying the API key which you may get here https://www.pushbullet.com/account

Then open the uTorrent and go to options –> Preferences-> Advanced –> Run program

under run this program browser to the application (exe file) and then append it with --

note "uTorrent Notification" "%N is downloaded on Dell Laptop"

Now you may test a download.

 

Cheers.

Saturday, December 21, 2013

How to install DELUGE on RASPBMC

 

1. Update

   1: sudo apt-get update
   2: sudo apt-get upgrade
2. Setting up Deluge for ThinClient Access

   1: sudo apt-get install deluged
   2: sudo apt-get install deluge
   3: sudo apt-get install deluge-console

3. we need to run the Deluge daemon. Enter the following commands:



   1: deluged
   2: sudo pkill deluged

4. first make a backup of the original configuration file and then open it for editing:



   1: cp ~/.config/deluge/auth ~/.config/deluge/auth.old
   2: nano ~/.config/deluge/auth

5. Once inside nano, you’ll need to add a line to the bottom of the configuration file with the following convention:



   1: user:password:level

Where in user is the username you want for Deluge, password is the password you want, and the level is 10 (the full-access/administrative level for the daemon).


6. Start up the daemon again and then the console:



   1: deluged
   2: deluge-console

7.Once you’re inside the console, we need to make a quick configuration change. Enter the following:



   1: config -s allow_remote True
   2: config allow_remote
   3: exit
8. This enables remote connections to your Deluge daemon and double checks that the config variable has been set. Now it’s time to kill the daemon and restart it one more time so that the config changes take effect:

   1: sudo pkill deluged
   2: deluged

9. Setting up Deluge for WebUI Access


Note: If you already installed the Deluge daemon in the ThinClient section of the tutorial, skip the first command here.



   1: sudo apt-get install deluged
   2: sudo apt-get install python-mako
   3: sudo apt-get install deluge-web
   4: deluge-web

10. The default port for the WebUI is 8112; if you wish to change it use the following commands:



   1: sudo pkill deluge-web
   2: nano ~/.config/deluge/web.conf

11. Configuring Deluge to Run on Startup

Put this in /etc/default/deluge-daemon and set DELUGED_USER to the user you which to run deluge as



# Configuration for /etc/init.d/deluge-daemon
 
# The init.d script will only run if this variable non-empty.
DELUGED_USER=""             # !!!CHANGE THIS!!!!
 
# Should we run at startup?
RUN_AT_STARTUP="YES"

 


12. This should be placed in /etc/init.d/deluge-daemon



#!/bin/sh
### BEGIN INIT INFO
# Provides:          deluge-daemon
# Required-Start:    $local_fs $remote_fs
# Required-Stop:     $local_fs $remote_fs
# Should-Start:      $network
# Should-Stop:       $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Daemonized version of deluge and webui.
# Description:       Starts the deluge daemon with the user specified in
#                    /etc/default/deluge-daemon.
### END INIT INFO
 
# Author: Adolfo R. Brandes 
# Updated by: Jean-Philippe "Orax" Roemer
 
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC="Deluge Daemon"
NAME1="deluged"
NAME2="deluge"
DAEMON1=/usr/bin/deluged
DAEMON1_ARGS="-d"             # Consult `man deluged` for more options
DAEMON2=/usr/bin/deluge-web
DAEMON2_ARGS=""               # Consult `man deluge-web` for more options
PIDFILE1=/var/run/$NAME1.pid
PIDFILE2=/var/run/$NAME2.pid
UMASK=022                     # Change this to 0 if running deluged as its own user
PKGNAME=deluge-daemon
SCRIPTNAME=/etc/init.d/$PKGNAME
 
# Exit if the package is not installed
[ -x "$DAEMON1" -a -x "$DAEMON2" ] || exit 0
 
# Read configuration variable file if it is present
[ -r /etc/default/$PKGNAME ] && . /etc/default/$PKGNAME
 
# Load the VERBOSE setting and other rcS variables
[ -f /etc/default/rcS ] && . /etc/default/rcS
 
# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
. /lib/lsb/init-functions
 
if [ -z "$RUN_AT_STARTUP" -o "$RUN_AT_STARTUP" != "YES" ]
then
   log_warning_msg "Not starting $PKGNAME, edit /etc/default/$PKGNAME to start it."
   exit 0
fi
 
if [ -z "$DELUGED_USER" ]
then
    log_warning_msg "Not starting $PKGNAME, DELUGED_USER not set in /etc/default/$PKGNAME."
    exit 0
fi
 
#
# Function to verify if a pid is alive
#
is_alive()
{
   pid=`cat $1` > /dev/null 2>&1
   kill -0 $pid > /dev/null 2>&1
   return $?
}
 
#
# Function that starts the daemon/service
#
do_start()
{
   # Return
   #   0 if daemon has been started
   #   1 if daemon was already running
   #   2 if daemon could not be started
 
   is_alive $PIDFILE1
   RETVAL1="$?"
 
   if [ $RETVAL1 != 0 ]; then
       rm -f $PIDFILE1
       start-stop-daemon --start --background --quiet --pidfile $PIDFILE1 --make-pidfile \
       --exec $DAEMON1 --chuid $DELUGED_USER --user $DELUGED_USER --umask $UMASK -- $DAEMON1_ARGS
       RETVAL1="$?"
   else
       is_alive $PIDFILE2
       RETVAL2="$?"
       [ "$RETVAL2" = "0" -a "$RETVAL1" = "0" ] && return 1
   fi
 
   is_alive $PIDFILE2
   RETVAL2="$?"
 
   if [ $RETVAL2 != 0 ]; then
        sleep 2
        rm -f $PIDFILE2
        start-stop-daemon --start --background --quiet --pidfile $PIDFILE2 --make-pidfile \
        --exec $DAEMON2 --chuid $DELUGED_USER --user $DELUGED_USER --umask $UMASK -- $DAEMON2_ARGS
        RETVAL2="$?"
   fi
   [ "$RETVAL1" = "0" -a "$RETVAL2" = "0" ] || return 2
}
 
#
# Function that stops the daemon/service
#
do_stop()
{
   # Return
   #   0 if daemon has been stopped
   #   1 if daemon was already stopped
   #   2 if daemon could not be stopped
   #   other if a failure occurred
 
   start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --user $DELUGED_USER --pidfile $PIDFILE2
   RETVAL2="$?"
   start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --user $DELUGED_USER --pidfile $PIDFILE1
   RETVAL1="$?"
   [ "$RETVAL1" = "2" -o "$RETVAL2" = "2" ] && return 2
 
   rm -f $PIDFILE1 $PIDFILE2
 
   [ "$RETVAL1" = "0" -a "$RETVAL2" = "0" ] && return 0 || return 1
}
 
case "$1" in
  start)
   [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME1"
   do_start
   case "$?" in
      0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
      2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
   esac
   ;;
  stop)
   [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME1"
   do_stop
   case "$?" in
      0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
      2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
   esac
   ;;
  restart|force-reload)
   log_daemon_msg "Restarting $DESC" "$NAME1"
   do_stop
   case "$?" in
     0|1)
      do_start
      case "$?" in
         0) log_end_msg 0 ;;
         1) log_end_msg 1 ;; # Old process is still running
         *) log_end_msg 1 ;; # Failed to start
      esac
      ;;
     *)
        # Failed to stop
      log_end_msg 1
      ;;
   esac
   ;;
  *)
   echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
   exit 3
   ;;
esac
 
:
13. Make the script executable by root

   1: sudo chmod 755 /etc/init.d/deluge-daemon

14. Run this script on start up



   1: sudo update-rc.d deluge-daemon defaults

15. Start the daemon



   1: sudo invoke-rc.d deluge-daemon start

16. Make deluge log something


Create a structure for deluge to log to:



   1: sudo mkdir -p /var/log/deluge/daemon
   2: sudo mkdir /var/log/deluge/web
17. Give the user that deluge is running as (in this case deluge) write-access to the logs

   1: sudo chmod -R 755 /var/log/deluge
   2: sudo chown -R deluge /var/log/deluge

18. Edit the init-script like so:



DAEMON1=/usr/bin/deluged
DAEMON1_ARGS="-d -L warning -l /var/log/deluge/daemon/warning.log"             # Consult `man deluged` for more options
DAEMON2=/usr/bin/deluge-web
DAEMON2_ARGS="-L warning -l /var/log/deluge/web/warning.log"
19. Restart the daemon

   1: sudo invoke-rc.d deluge-daemon restart
20. Tell logrotate to rotate the logs

sudo cat > /etc/logrotate.d/deluge << EOF 
/var/log/deluge/*/*.log {
        weekly
        missingok
        rotate 7
        compress
        notifempty
        copytruncate
        create 600
}
EOF