make motor ON and OFF for fixed interval of time
A 666 555 timer is not appropriate here.  Such long times are best done digitally by dividing down a faster clock.

Even the cheap and tiny PIC 10F200 microcontroller can do this easily.  The circuit will be smaller and about the same cost as a 555 timer, but irrelevant anyway compared to the cost of the motor and the circuit to do the high power switching.  Both the 555 and microcontroller solution give you a digital signal indicating when the motor should be on, and require other circuitry to use that to actually switch the motor.

The 10F200 comes with a internal 1 MHz oscillator.  It also has a 8 bit timer, and that timer can be configured with a 8 bit prescaler.  I'd count overflows of that timer to do the timing.  (1 MHz)/65536 = 15.3 Hz, so there are 220 k overflows in 4 hours.  30 seconds is 458 overflows.

You only need three bytes of RAM as a counter.  Initialize these to 220 k, and decrement once every timer 1 overflow.  When it reaches 0, turn on the motor.  Set the counter to 458.  Decrement every timer 1 overflow.  When it reaches 0, turn off the motor and repeat.